Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2536519yba; Mon, 22 Apr 2019 08:32:12 -0700 (PDT) X-Google-Smtp-Source: APXvYqzv1S/8mfATroBB6OLZijia1aARQlgxxVr+7bxGeabRklvbMW+NTIsGkg0duZUHspfYmuog X-Received: by 2002:a17:902:442:: with SMTP id 60mr21155356ple.107.1555947132159; Mon, 22 Apr 2019 08:32:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555947132; cv=none; d=google.com; s=arc-20160816; b=0mBltsecyz20C5G4OfEnKYMVa16B0Pd2lSwHzEEPzzMIQAW+FaZGpap5QWdUo4Cgwt fkmY9U6Tt5uMBxGSox44mQd9qeFTHYi3yKTMgTSjMl6n6/eDcRJIx4kXifffYtU7yz8I dLzbUp6PD9MOg8G1PN89/O2WtH2+tHSjp6E3pFflX2O9LxJ+eRyATjGnv0VoleQXdWtS IhesIsnK08xS0d5/hsn1ybqFugCLysarhxdzLI0Dv/0rC6iM4UwepOVspijVpz4upkCE ng7aQeQv5e80iGoX5oYQcoobPeetMuRla1qz37YYWyqntmY2RbvrJ2HUtX15yHkjw9c/ ZWBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=cJLRMY/oIZc38KiECWt7WRN1sjpvQPsGESgz1EIgkGI=; b=HdPgTGIzzvTIZIAA5jaA9fDdOUYcWHvVQ778VCDkGlXurOL3iKbsTmVAYZaCNvjLza 2UZ37Bslc53PK4/lqxDE9x6ILJ5PYVOo5PtPds1z3CU0qKs5Nz2jGn8qipjvvb/ID77S xWk1GyJGx+BDiltyVgcOIZDnlvVcJpyTFd9Iavo9mJBfmv7IiBamYct8smKpbYZdC6Cw UpFBpwRgDpO5wRFfyqIziu7XWi55fXbor+/C6ML983ojz+ZNQ25jHbVWqxc0g0keMxBB GiMPvOisEF4Deeb+KuL3kluMV2gnsh9u78FPBwozVECtJAYD1FJwSrvrEub7cOHkUBjv FEJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=bChcCUJS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o19si12711107pgk.324.2019.04.22.08.31.56; Mon, 22 Apr 2019 08:32:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=bChcCUJS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727594AbfDVOtm (ORCPT + 99 others); Mon, 22 Apr 2019 10:49:42 -0400 Received: from mail-lf1-f66.google.com ([209.85.167.66]:33549 "EHLO mail-lf1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726587AbfDVOtm (ORCPT ); Mon, 22 Apr 2019 10:49:42 -0400 Received: by mail-lf1-f66.google.com with SMTP id j11so9167492lfm.0 for ; Mon, 22 Apr 2019 07:49:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=cJLRMY/oIZc38KiECWt7WRN1sjpvQPsGESgz1EIgkGI=; b=bChcCUJSbHp0wn7bjv2f3rtedvO2/k7boQbST3NORgZ3Xtz2+gbWV4Z65aSsDXBr8y V1sL3ZvatxCU9M7kStI3fSRy5PAm7CIeXV/PPL1EOjxLEy0GKAol1bjdV4s4tV5ozc+/ 7SYRroKoTCJZaMETi3JmkMW7VF3LbYMeuMm3gkBZeglDVZo7EewlvUY4eptmCb0dMfm8 yLsjGKEc8zOFlUaxsKJwp7u87IYQ7rBjh47d+NgKJ33Q+jvgwpGHrvz77oP68dciBuqE dXiaY3gkQMc9wz5dJRU1OuBdZy6BCkqWShUzYC0KrS3QaAEgBgXdwByCZ+1fCoiQrQ+c HHzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=cJLRMY/oIZc38KiECWt7WRN1sjpvQPsGESgz1EIgkGI=; b=tGiG0wW1CN4THw4ITu2Mtkp8+voR6vhXFUMlk1yPiPu9FBwTJ+0rQMxaV2KjG2vch5 Sn1F/L/v1fpWTpQ+z6DTitqVrrdBifGJlhIjNw+t6n/u5eX6iFa2taDZSPcIHqA80WJ9 nYVh8wfWDNE0XLoEGetfO2Zpgp6jg9rCSYy/QfWMdNLMVcvE0lIAEefhntT8qUfuOBQ1 JwD+kme4Jxf3apXMZJq/oaEE5al8xMTfoPjURNJnVJ/WqP+EO2pM4wq2AOX3zsg3wgjK HX7QEFhnVWr6kbCCQoWiQs5vbQPhdX87mtZFem24kP62nY5J4Xm+XmftczIj301aXuIf 0/wA== X-Gm-Message-State: APjAAAV2YCyuojCaJjOQj6mgasOc8dWmw2JZBkRyI2CwwTk51+nhkpm8 Dyn69meiHV9azNOyt623CX9VeoJTUhPEw9gSypMXCg== X-Received: by 2002:ac2:5582:: with SMTP id v2mr10341217lfg.19.1555944579370; Mon, 22 Apr 2019 07:49:39 -0700 (PDT) MIME-Version: 1.0 References: <1555106365-26137-1-git-send-email-tyhicks@canonical.com> In-Reply-To: <1555106365-26137-1-git-send-email-tyhicks@canonical.com> From: Todd Kjos Date: Mon, 22 Apr 2019 07:49:28 -0700 Message-ID: Subject: Re: [PATCH] binder: take read mode of mmap_sem in binder_alloc_free_page() To: Tyler Hicks Cc: Greg Kroah-Hartman , =?UTF-8?B?QXJ2ZSBIasO4bm5ldsOlZw==?= , Todd Kjos , Martijn Coenen , Joel Fernandes , Christian Brauner , Minchan Kim , "open list:ANDROID DRIVERS" , open list Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 12, 2019 at 2:59 PM Tyler Hicks wrote: > > Restore the behavior of locking mmap_sem for reading in > binder_alloc_free_page(), as was first done in commit 3013bf62b67a > ("binder: reduce mmap_sem write-side lock"). That change was > inadvertently reverted by commit 5cec2d2e5839 ("binder: fix race between > munmap() and direct reclaim"). > > In addition, change the name of the label for the error path to > accurately reflect that we're taking the lock for reading. > > Backporting note: This fix is only needed when *both* of the commits > mentioned above are applied. That's an unlikely situation since they > both landed during the development of v5.1 but only one of them is > targeted for stable. > > Fixes: 5cec2d2e5839 ("binder: fix race between munmap() and direct reclaim") > Signed-off-by: Tyler Hicks Thanks for fixing this up. Acked-by: Todd Kjos > --- > > Hello - I was backporting 5cec2d2e5839 and didn't think it looked quite > right. The patch description doesn't specifically mention a need to acquire > mmap_sem for writing and the two commits (5cec2d2e5839 and 3013bf62b67a) landed > relatively close in time to each other so I have a feeling that a mistake could > have happened while resolving conflicts. > > I also noticed that commit 3013bf62b67a was slightly incomplete because > it didn't rename the err_down_write_mmap_sem_failed label to > err_down_read_mmap_sem_failed. > > I've tested this change by enabling CONFIG_ANDROID_BINDER_IPC_SELFTEST > and verified that the binderfs_test selftest passes. > > Tyler > > drivers/android/binder_alloc.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c > index 195f120c4e8c..bb929eb87116 100644 > --- a/drivers/android/binder_alloc.c > +++ b/drivers/android/binder_alloc.c > @@ -931,8 +931,8 @@ enum lru_status binder_alloc_free_page(struct list_head *item, > mm = alloc->vma_vm_mm; > if (!mmget_not_zero(mm)) > goto err_mmget; > - if (!down_write_trylock(&mm->mmap_sem)) > - goto err_down_write_mmap_sem_failed; > + if (!down_read_trylock(&mm->mmap_sem)) > + goto err_down_read_mmap_sem_failed; > vma = binder_alloc_get_vma(alloc); > > list_lru_isolate(lru, item); > @@ -945,7 +945,7 @@ enum lru_status binder_alloc_free_page(struct list_head *item, > > trace_binder_unmap_user_end(alloc, index); > } > - up_write(&mm->mmap_sem); > + up_read(&mm->mmap_sem); > mmput(mm); > > trace_binder_unmap_kernel_start(alloc, index); > @@ -959,7 +959,7 @@ enum lru_status binder_alloc_free_page(struct list_head *item, > mutex_unlock(&alloc->mutex); > return LRU_REMOVED_RETRY; > > -err_down_write_mmap_sem_failed: > +err_down_read_mmap_sem_failed: > mmput_async(mm); > err_mmget: > err_page_already_freed: > -- > 2.7.4 >