From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S937200AbdEXOwI (ORCPT ); Wed, 24 May 2017 10:52:08 -0400 Received: from mail-db5eur01on0125.outbound.protection.outlook.com ([104.47.2.125]:39906 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1761012AbdEXOwD (ORCPT ); Wed, 24 May 2017 10:52:03 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, Dmitry Safonov , Al Viro , =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Greg Kroah-Hartman , Riley Andrews , , Android Kernel Team Subject: [PATCH] binder: Drop needless locking in binder_mmap() Date: Wed, 24 May 2017 17:51:51 +0300 Message-ID: <20170524145151.21310-1-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.12.2 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR09CA0057.eurprd09.prod.outlook.com (10.174.50.25) To AM5PR0801MB1729.eurprd08.prod.outlook.com (10.169.247.7) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM5PR0801MB1729: X-MS-Office365-Filtering-Correlation-Id: 9c18539c-1b1b-497f-77a2-08d4a2b46e95 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:AM5PR0801MB1729; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;3:7jaCPYq9a1eMpuZk2ZZXiTApuEPQJnCqRj2aIdOttaFSLHjPSxTmXysV7E3sQGrtOzfOT5mR+X8A3wHnDHq5LG71Dbtvej1gyvL3XwEQHywlkToejQvcsGvY4bF/kBPepYQ2FpcyL5ioOQQDlSKthn8ADxGkz2/9u40EnWWZVBDDUQBf4wdwr0rw3WlvVJT8aGhQ2Lkq1FxZI7W0Ynb/Zrxsz/ZzflvovXnDxaSzU2yOF/PTm9P89mJShh3ARpacapwqLkomxM4z2F4ZLaJeCNk/gVRsm9b6c155DfE7pjxzeME9ABXY3vtbGlpzmnc3OWlEip+/VYnk9xpdgI1vpw==;25:llASYaZfSjigtY2fTM1h9zq9Q3ke0bEqZzRDnZOxpJaMnklu6dTyh/jcMb6NU5aX3LxWhy0qlArON/aJfEx7usWwGMWtnMhfUvf7D263AZI+yKTAYNNEGBfV47+6zC4/kJ13KEKTRe0Z3+B7FpLhyNNT1+JWF9SsaoZ0VwJCrs7PVDsmfbFFbNnkIzocSDqFhj/x0de4JAWBv92GBeAWC2pWy9gUp5eGVgZ/+X9LuQM/AGR1tSK9PT4KSlPoNNxN4q0lyS0Pe0oJ4MFXsAL9T/X6JlrJOzEeqUyeUnJiqGNRjfi0Ss87aPMhX2AqxNnrDEC1dUPPM1dM5UYIsBbeFY6JiNCtNWwu0U35MCb1OhNl8/fzm5FHcVE2hGd1m4r/oHgj1BZ11Cfg1Y7Cv9JdEjgqmmonbEpJ27+GSpB+mY5UP35ZGceNc4wBClMJkNgxwEt0ClR//votgyxFKpG/y8+Z78VlW7XHzTTNgteV51E= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;31:it8z9cX4zfJ+dKU4F3Iz8zNjWL2NA7EUwBmrXvROIkrIVecmuibQ11b09q7UfY4dpFbzlWn2dXzbXBYsOUaxe4pq0bCR237jJECiEJvk9DxuqckadgWMefa1V1kaOk/F7taD9tcuQ1ZEEFR5rNXslJ6GI5gdrcT9/LZ7QKeJZAeGWiJf0zttrg86K8XyVt0c1PF0QthIi1xwlZwpRjsmUY6LpZ9ZbdRt4+TcUhO8TVE=;20:aJ6GippMxuiYjdnEzjUTz0jM/k98/PdcJbpUAg/JllZNUE2vQpYecqyaWoXcDEM9dzLT2V9aYambTyNrqE7nw7V4Mq5SDwnQTcWihlfCagGpSLhxM6LyJt3axLcoWfOE+QsNk6Lj6ivUoBAdb+9C1FtVjgW79ad/U5Y+nUCGkw4Lf0iyfQBxeARNOc5Rq8ooaOrVIh0zR2t2lFB6PtGBX6UTAcCpFhxbklj7zfPzH2f6jsh5FmUvnj85tuaFznJL2rwG0dDKcncM8uii4b9hucjBGxkMKE3wak8vQTX6f06Z/7QNC0zQtDwxPai3YNmpc2U/ZvOfcdqnF/qHUZIoJMF8K98R8IjFoLsbZn24c6rucgbXk1HmL7nADjqPJV9DsVk4dhHInVSH3yQ5pqy1vn1izzBhwzNDnQTBzmVOaKk= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700054)(100105000095)(100000701054)(100105300095)(100000702054)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(100000703054)(100105400095)(3002001)(10201501046)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(20161123555025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(6072148)(100000704054)(100105200095)(100000705054)(100105500095);SRVR:AM5PR0801MB1729;BCL:0;PCL:0;RULEID:(100000800054)(100110000095)(100000801054)(100110300095)(100000802054)(100110100095)(100000803054)(100110400095)(100000804054)(100110200095);SRVR:AM5PR0801MB1729; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjA4MDFNQjE3Mjk7NDpyQzhFem83cUFsdmhFek1iWDRzaE4yY2kr?= =?utf-8?B?bFJ6NlhZYlpKeVRuVEZhdWI5MU1KMmk1QjJtbkJDenFnZm1ZTzE2VnhCQURm?= =?utf-8?B?SmhrQURLRUdyZk1LUUFNcGM0Sy9ISkxlOVNPTjNqdWNRUElYUEdqZjNiNDU3?= =?utf-8?B?WVN0ZGZWUHRFTEJYYkFTRlVkUy9hdmJpMWtjdjRHTkM5azZYMk5OMXh1Kzhm?= =?utf-8?B?NTVMT1dJV3hseXQxdzNkcXFPSlpFNHBnT0FIWW5KUWdCRStyaVA5aUs0cGRx?= =?utf-8?B?ZC91V0N6ZndBb0M0RjVsVGNCcm14MHkxMGhIampyZ3lWTUpBNDUxRDJwZEVO?= =?utf-8?B?R1Aralg4cWpGSUpkVSsrYkFoV096dXhSQ2dMZlliT2JkdGlpcU40dVJCZDlX?= =?utf-8?B?UG96TmJXZ1dVMVdNenlVRTNXTkN3NVk3Um9pVEtsa0krKzBSNUJBRkZyZWUz?= =?utf-8?B?QmpNYXZSdEptWWRxZ2JGZENqOW1PbEt2OVp4L0xLdmNMQjNUQ05keU82aTBx?= =?utf-8?B?WmhQajA2N3RtMElqVmtjWnMwZEJIa2MrcU5MUktUTTUyd0RFeEVmODYwMk9n?= =?utf-8?B?RjdZcUV2TWZvNE5uS1hZWXh4dHhnV0RvSHZRRUtFWkR3dHFCQUI3WFF3NGdK?= =?utf-8?B?cGdsVS85SzdYVUg1TE5kYU91UlIzRGp3OHBrWS9CTWZzV3hzdTVTd2sxUEtQ?= =?utf-8?B?QjBlSTVYUjhrUjRpTWQ0bGp6bmFSOW1aNUJ0eERmZjdPN2g3ZEZnZDVSK0JW?= =?utf-8?B?S3JqZWpjbE51WE9IZzVBTnlYcWNtVWxidC9RNVQxLy93ajdhMjI3Um9HdW05?= =?utf-8?B?YU9JNUVnSkt2VkNqTXd5QVMrOHJOeXdaSXEwVVQ2cWRsdjdlZTZrSFpNM3JI?= =?utf-8?B?bTBsWi9QQThSeElUK1JkSVhRV3ZaQkNZaFd4alhkcVorbmt6dTN2SjVJZ2RY?= =?utf-8?B?d0x0WjBiZmNmOGtOanZ6UzgrbFZ3NFpZK0NXdVdVRVB5ZTM4K2ZOQ2NFb0RM?= =?utf-8?B?ZmcxL3M1dmVocUJERGMxdFNoRGhNVS9uSkV3d1JNTEpUQ09vWFB1ZmN6bSt6?= =?utf-8?B?em02TUc1UUp6Zkx4enV2SnFFNzlGd1dJVkxCMzJQenQzYURab0NjRS9KelF3?= =?utf-8?B?YkkrSWtRZ2h3ajJjSzBqeXh2ZERRUmlNVDRVVGVVaC9nN3RmSkdwZldyNzhR?= =?utf-8?B?NWJ4RVFYL25mbzQ1WXZqVFpwUmVPci9HcXdzNEVsNndhL3lKdnhHRkJudlBv?= =?utf-8?B?OXJOUHIwdEc3L0ZGeXZtdGZSaE1PeW04QWNwOUNqY1BGL04wTWVDL0p6SEM1?= =?utf-8?B?UlE5UGFMU0IrMmRJT3MyeDVmdGtMUmJLQWhCZ2Y2Witaa3NQRjNXR2VzKy9H?= =?utf-8?B?ZmhxR3Q1T0VwaTUybGpsekNFOXlvWndCZ0h4R1JTR09yYmFNNmpiR0czNFpw?= =?utf-8?B?WExzSUlJSHF1ZmJIY3JzMVlqWjQ4S0Y2TnJld1c0WGVJWEJlTVRmNVhQQTZ5?= =?utf-8?Q?zGmZI01YQ5XQ/X+B1WjOMb5HnBcYn1qxOgHoW+JACdH3Qp0?= X-Forefront-PRVS: 031763BCAF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(39410400002)(39400400002)(39450400003)(39840400002)(50986999)(1076002)(50226002)(4326008)(5820100001)(8676002)(110136004)(38730400002)(66066001)(25786009)(47776003)(53936002)(6512007)(5660300001)(6116002)(54906002)(3846002)(36756003)(189998001)(23676002)(42186005)(53416004)(33646002)(6666003)(6916009)(2351001)(2870700001)(6486002)(6506006)(86362001)(50466002)(2906002)(81166006)(7736002)(478600001)(305945005);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0801MB1729;H:dsafonov.sw.ru;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjA4MDFNQjE3Mjk7MjM6b21mT3FoakdqUFB3RmxKSzY5N21lVWRW?= =?utf-8?B?Snhwd0NUMFUvaEJpYmU4T3RWMlNoUWl5b2hVMkNxamFnZDE5MSs2MFhXRys4?= =?utf-8?B?cVBZVlRCMU1YbFRjWmhidk9MWDRTNWpwVmRrQVF1bmp0enNDOWNnTXdLN3k3?= =?utf-8?B?L0tpeUZyZUpjOTh3WFpIcUI5SkpxelUzVlJMZEx1a1NHZzA5N2xKOEhmeWQv?= =?utf-8?B?NGJvZWpyN2lZb0RVMDdzYXd2eWZCd0pnMHVVTmtZUmpiK1ZCdDhaMTEzcmp4?= =?utf-8?B?akFBMzdiZU1EUzd1WWt0OHBqQ25GTkxFQTdJT1FrdWxKR1p0bWl6MVNFUjRi?= =?utf-8?B?a2RDdU9Xb0liNGVvMHJZNjJHSFFiWFNZNlVta0RCbnVaVS96VG1DNnIwczVX?= =?utf-8?B?Tmw5RXhraUYrcFErb000N3FlM3JLbTJZekZMYlN1NWtGalVnbWNwUkM5ZUpi?= =?utf-8?B?TGtxeCtPS24wWG5IcEZoQ0hQcENDd1FsN3RYd3R4bGhwYjRvYUVNbktXeVd2?= =?utf-8?B?TlFOa2xHazlreXF3SVY3dUZVenc3ck4yWmtkWGhlakJzeStlOURuc1UxdzRm?= =?utf-8?B?UTUydzltOFprdmlnZ3BiTTUzSGxNSEpBZHZwdlZCc3FKZFo1bjQ1REQxTmFM?= =?utf-8?B?eFlvTVJ2dHpYYzFvb3EyU2Q3WG00WmlDL3U2UTg5eDFBVVhNYUxjMWJwbFhx?= =?utf-8?B?b2FCYUl3cXRuZVVYZ2oyMWg1b29RRGg0em9Tb1hZdTY2NVFnTGZIS0hGWWRI?= =?utf-8?B?NHJPS1ZxK2UvY2tXc3VTOEwrN1ZTdFB2dyt2NHViVWZZb2tZcWMyY3lXWDFl?= =?utf-8?B?NEg3amR4eUpYZ3ZSdXZZY2cwMDJGQ1VJQXFIQ2ZZOWhQVzhKYW1ESENxd2dh?= =?utf-8?B?dldRdWVZbjJsQndHclZpcnBSSzdMTTFDOVFNbE90dlhSRmxlRlB1SUF6NlRi?= =?utf-8?B?S1FmVkZBVHREYVA3RmF2YzdMSFJlYlZ2UE9RYWFwV3dDamxtZ0U3dzBZVTVQ?= =?utf-8?B?R1dFSU0zdGZFbjhMcmwrMDVZWlNSWnYvOHlDN3FlZDRnK3JVK1BlakpvSUoz?= =?utf-8?B?dUJsS3YwUktJYW5KOTdJV25NTElYS3VjSWI4b0dVQU1KaHIraUU5R0V6VHBK?= =?utf-8?B?UWFncW5aZFN4TFRpL2JncGtIZFdEZHpNU25yTGs2eEdVTmlTaDFMRkM3NC9I?= =?utf-8?B?T0JZTW5ibWpvak1HeWhDb0hGT0k4MFRvdXdQT2FrRzRabXZvemhGV1Y2Yzh0?= =?utf-8?B?RGJHNTJWZXFmb1J4bGNFUCtBZ3pOdlBCcFZ0TFkyaDh1TEcwZzZ4TG0rY3ha?= =?utf-8?B?SkhCeVNPWXJMTk9mQzJDYUJya2xHNlQ1Z1VYVUNwMDNnMk5JTjREZzBYSEMr?= =?utf-8?B?U1Q2U2RKQzlFY1JidVFtYllkWURNUnFBWjhSUDN5WEp4MVgyVHlSUkJQVk9r?= =?utf-8?Q?/0jBaNH8=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;6:Sd7hlk9CR7B2p+6HwFtx83Mt4gFHxADmLXz13dI/O8ZyRk7r5J2ms6rXHRfqm0PFAcprFv89QQ1WCTyCwNYAAih0o72gHvUaCir9K72xMDVzUnynogymLkGR9en1dKmGzASwXYPhMtFbALUAOF/RqYCHj7AcMeg9FqiU98lVNXNjWGH75+hG3hhzeEr2KD/Qc65qpPRRNc05xsbn0l21m+5hApIgLnK606UHOrPa+4xSG4pBQPN8+z0aB9aOe04VP7OEj1o2ndg/WPd08wfLgg9H8HMdBXriG5HrdEd9Zt23sRpxASsu4E2C3V1auo9HTZe22rlmS3QQbQ0wSmbyjvuu1ATG67r0nf1LXBUetg9rg95vhu9qotd5G8jipiGFelpu5425+OM0vFScfHjw2Qm5fFIXuVil5YeK2pMwrjl8UWr6Gg5Hg1dQtk+nslPH0gm48msHaNu57+jLKkMgqQKiLHknUXvFSIpIazRCq7sruga7xrECNAsVodxlMA+Kxt5LH41b1gwxNInagHOpRw== X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;5:j9rLFWRrMcVUE4aCaRhrM7Hqab3ERWOB1AUwtdB8udMGhTpKe6gKXFJeFYkRXB68jiizwKz1fLogAFSo9p1cT59XxdJTvnwCU5ycnUfFzUM8S7UPkATld7cQus7u9T62oVqM94wV7eKrI5WCkzG12IZm2CIaCO6r37UEfQHJ1rzv4j9OG6lHjWP1aF6gFKCkSvvDYKieNMZnPDIIS80V6Ia1z1bHVwVFJnS48Gau2N/D7J4fQ6MlOjxBNoBU+iY0HAV8Kdfg5sUWdkXnO8O8N3ncRqYzxUN8P0r5INwr+kq2esuUbkXlYiqUhjFh7eCLJHf6M1ahh08nsOOU12c+IDX19puIP7uFl/zUXIKwQhFpAth0IRtY5ZmaZacjISNTRVVmaYmui+tDg113zHw8bETSAYV1ex1zNBSqJr07/S/B2PYp9pOpOZQH8TBxLQzyYzu7d0LZkRH5MRMreXXsng==;24:782S7UJM3NH4vWVwFHSkynHp6QGhtbeNg1ePyg08mnxxhNjM4fBcAQWZjE2GxXvcptRV9+s6wllh0YpfCPlfGJUZr6TCYD5p7A6v72hovwY=;7:sYb+kZ13fy2P08nYylEO0CJqMlcyvEtsC9zMhtx3qPtXzQVTk5XFuPW0T5T86pfddVtLcDfQYnO89yT/io1FWyZtKLWwjOse5Al8REd6+5CmSOcf5rFAHadgxsLiWgDTPJJtufud/1b4uFLKalMZmxBXFr4IsY8kcVT+28o0tc08PySCaJN7UwBlRXkjHgWGHjM6lQvUfj7DYF20VKzYqCKVpCRZ8U44mmNTQxaVHhQDJO90xJh2YEkMWmUmp0Asn76m1FIkMsf+V8kHb6EVknwOJZyp29v4LDj9o+lGjqdclh+fRVyf+jlLUNhwV0qnp6vdNnA6DszZ9AcxUhJBZA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM5PR0801MB1729;20:rBQKYg4AX5iQOjdSxlUAqeiC+m4d52bi/I3KzRtSadgaxP74QBJn208gxtP9kF6VvoTaTtpBNP44Bx9vHBavGLD+AhY4uusV5E1BamHtbeRBWtafD/eg3CpSQGyPBVNnByZhj/9QVCHmObF0855MMiH4Z7FPKWV7e8No5S0eja4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2017 14:51:59.0027 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1729 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org binder_mmap() protected proc->buffer from concurrent changes. It was introduced with commit bd1eff9741af ("Staging: android: binder: Fix crashes when sharing a binder file between processes"). The commit fixed such races alike: task1 ===== fd = open("/dev/binder",..) fork() ---------------------------------------->task2 | ===== mmap(fd) mmap(fd) Afterwards the situation was changed with the commit a79f41ed9786 ("binder: don't allow mmap() by process other than proc->tsk"). That commit prohibited mmap'ing of fd, that was opened by some other task. That restriction has made locking in binder_mmap() unnecessary. Cc: Al Viro Cc: "Arve Hjønnevåg" Cc: Greg Kroah-Hartman Cc: Riley Andrews Cc: devel@driverdev.osuosl.org Cc: Android Kernel Team Signed-off-by: Dmitry Safonov --- drivers/android/binder.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index aae4d8d4be36..b5b32be85ab8 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -49,7 +49,6 @@ static DEFINE_MUTEX(binder_main_lock); static DEFINE_MUTEX(binder_deferred_lock); -static DEFINE_MUTEX(binder_mmap_lock); static HLIST_HEAD(binder_devices); static HLIST_HEAD(binder_procs); @@ -3381,7 +3380,6 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma) } vma->vm_flags = (vma->vm_flags | VM_DONTCOPY) & ~VM_MAYWRITE; - mutex_lock(&binder_mmap_lock); if (proc->buffer) { ret = -EBUSY; failure_string = "already mapped"; @@ -3396,7 +3394,6 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma) } proc->buffer = area->addr; proc->user_buffer_offset = vma->vm_start - (uintptr_t)proc->buffer; - mutex_unlock(&binder_mmap_lock); #ifdef CONFIG_CPU_CACHE_VIPT if (cache_is_vipt_aliasing()) { @@ -3441,12 +3438,10 @@ static int binder_mmap(struct file *filp, struct vm_area_struct *vma) kfree(proc->pages); proc->pages = NULL; err_alloc_pages_failed: - mutex_lock(&binder_mmap_lock); vfree(proc->buffer); proc->buffer = NULL; err_get_vm_area_failed: err_already_mapped: - mutex_unlock(&binder_mmap_lock); err_bad_arg: pr_err("binder_mmap: %d %lx-%lx %s failed %d\n", proc->pid, vma->vm_start, vma->vm_end, failure_string, ret); -- 2.12.2