From patchwork Wed Sep 30 01:20:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jann Horn X-Patchwork-Id: 11807517 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BE84F112E for ; Wed, 30 Sep 2020 01:20:06 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 6EDB02158C for ; Wed, 30 Sep 2020 01:20:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Vi/xsfmt" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6EDB02158C Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id AF3CB6B006E; Tue, 29 Sep 2020 21:20:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A8FC26B005D; Tue, 29 Sep 2020 21:20:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 78E2D6B005D; Tue, 29 Sep 2020 21:20:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0064.hostedemail.com [216.40.44.64]) by kanga.kvack.org (Postfix) with ESMTP id 6308C6B005D for ; Tue, 29 Sep 2020 21:20:04 -0400 (EDT) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 277998249980 for ; Wed, 30 Sep 2020 01:20:04 +0000 (UTC) X-FDA: 77317971528.27.silk52_0a003302718e Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin27.hostedemail.com (Postfix) with ESMTP id F2C1D3D663 for ; Wed, 30 Sep 2020 01:20:03 +0000 (UTC) X-Spam-Summary: 1,0,0,4222a3e55d5f88b0,d41d8cd98f00b204,jannh@google.com,,RULES_HIT:41:152:355:379:541:800:960:967:973:988:989:1260:1277:1313:1314:1345:1359:1437:1516:1518:1534:1540:1593:1594:1711:1730:1747:1777:1792:2393:2525:2559:2563:2682:2685:2859:2903:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3152:3165:3352:3865:3867:3871:3872:3874:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4250:4321:5007:6119:6261:6653:7903:9025:10004:10400:11026:11658:11914:12043:12296:12297:12438:12519:12555:12895:13069:13311:13357:14181:14394:14659:14721:14777:21080:21433:21444:21627:21990:30054,0,RBL:209.85.218.68:@google.com:.lbl8.mailshell.net-62.18.0.100 66.100.201.100;04ygdeggjwtfm6esr3q9so8h9ktf5opbt69g6thxrgqm8gxmyj9meojhbhm3u3u.6gk545g7tkarb3eurck4yoarhf196ejd15xysu4ix5rumak4pk1cpa8zi4dwhnd.c-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fp,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,L UA_SUMMA X-HE-Tag: silk52_0a003302718e X-Filterd-Recvd-Size: 3800 Received: from mail-ej1-f68.google.com (mail-ej1-f68.google.com [209.85.218.68]) by imf06.hostedemail.com (Postfix) with ESMTP for ; Wed, 30 Sep 2020 01:20:03 +0000 (UTC) Received: by mail-ej1-f68.google.com with SMTP id i26so335360ejb.12 for ; Tue, 29 Sep 2020 18:20:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:in-reply-to:references:mime-version:date:message-id:subject:to :cc; bh=JGYJS9NsdZi1x8beX5PbpUGbiZl53A1tuTawkgjS2/I=; b=Vi/xsfmtZt0OubUV/0I5sNv7CqOvrLxLoXAOnwdmWcs9UNaz3IytMNDB+VDywmMkFt 4Nvn2U3hgPCbckquNLY6N2RNzVOKRAkpzuxRLOgyivJoqu5FhIwLGd3vCDsViVU1VX1U 0j01qqilWxOOR3pYtf6YX7LySWAu5+8Y2H8UWKijw/Dvm5B9BDOh0nn4ZQVMlrm2MJ// gta12xDCdtSm33nPxOO8SnPFSndLzKGKqUtoS7hqWz15pPPDHAmMItCY2JyOaV4kWM5d gE80NxPWOJp3FI3eP3wbcvL5GSfe4L1ismIZq6L4aXThyhp19RGqyNQ/r/jSPV4Stp1L vYKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=JGYJS9NsdZi1x8beX5PbpUGbiZl53A1tuTawkgjS2/I=; b=F5y/OG0MdvzXet0lb5A1MDwInd57w8KjqPwVn6gIAYVxKf9EFr9zVXY73dwJX6NLef MtUczZnnk7A+JVQZDdFnCjSJQbxjKtau17/vUxZmjaoPHK5DFkvp0/35UnZ98nwMwdAg XjrjfyuDbJ1wyGXVu3CiWWyBePh6txXQYcqoZBX4AkrVUGyStEC3hYbhsfD55BFpfSyH IaJgs1H9I1X0XzEJBdStIu+JGy/AAtTmpx02IcDT1GcKGPpAVWlWDouPgMvLueQTbT9v bBTMO9m8EsjsNQn+ADRVBY/c4rM1jzJjT6N75KP3ucqmqgCh1u2BCEr+SmT4Vl/+NLde 50XQ== X-Gm-Message-State: AOAM531WqgMZj0HY+77MayELpiQ7j0J6CjGAUGYd5NFIexJG3Wl4Dwn8 +9cVhG3rrcpsUTpTq574NlyQCdVqIt/GEZ3EVYTW5Nln56o= X-Google-Smtp-Source: ABdhPJyRWWwuTyTX/XXS9zCN7ij+NQlamQSZw7NV5QSXRYBapraXEqXZ1OWbdSP0h+eqkO/Qteau7MjPS9vhW/GAPH0= X-Received: by 2002:a17:906:980f:: with SMTP id lm15mr438339ejb.184.1601428802457; Tue, 29 Sep 2020 18:20:02 -0700 (PDT) Received: from 913411032810 named unknown by gmailapi.google.com with HTTPREST; Tue, 29 Sep 2020 18:20:01 -0700 From: Jann Horn X-Mailer: git-send-email 2.28.0.709.gb0816b6eb0-goog In-Reply-To: <20200930011944.19869-1-jannh@google.com> References: <20200930011944.19869-1-jannh@google.com> MIME-Version: 1.0 Date: Tue, 29 Sep 2020 18:20:01 -0700 Message-ID: Subject: [PATCH 4/4] mm/gup: Assert that the mmap lock is held in __get_user_pages() To: Andrew Morton , linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, "Eric W . Biederman" , Michel Lespinasse , Mauro Carvalho Chehab , Sakari Ailus X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: After having cleaned up all GUP callers (except for the atomisp staging driver, which currently gets mmap locking completely wrong [1]) to always ensure that they hold the mmap lock when calling into GUP (unless the mm is not yet globally visible), add an assertion to make sure it stays that way going forward. [1] https://lore.kernel.org/lkml/CAG48ez3tZAb9JVhw4T5e-i=h2_DUZxfNRTDsagSRCVazNXx5qA@mail.gmail.com/ Signed-off-by: Jann Horn Reviewed-by: Jason Gunthorpe Acked-by: Michel Lespinasse --- mm/gup.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/gup.c b/mm/gup.c index f11d39867cf5..3e5d843215b9 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1020,6 +1020,8 @@ static long __get_user_pages(struct mm_struct *mm, struct vm_area_struct *vma = NULL; struct follow_page_context ctx = { NULL }; + mmap_assert_locked(mm); + if (!nr_pages) return 0;