Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp1670924rdb; Thu, 7 Dec 2023 06:01:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IED+VtJ9nEKThW6foulegJve5/SJueBIszl4WIfOqQv/OsOtP18e3a7bsaMBYsb6cnagVLk X-Received: by 2002:a05:6808:159b:b0:3b8:d135:dcfa with SMTP id t27-20020a056808159b00b003b8d135dcfamr3086886oiw.34.1701957666636; Thu, 07 Dec 2023 06:01:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701957666; cv=none; d=google.com; s=arc-20160816; b=hX8rCuNQpHRKQgAzXzONumc0mHPQbQ2VNcIL7OtELEBjlJdN9WsxZ+rtCq+Y/Vv//s JpbkDfv26GQTd6IqoAe/GqRpshJjgo75wTtIBAz8rO3j/r72SZSpCvrovQ3lKKAZTrFX DQXcpb2imn9skSv8nqjIPJVwRkBwWJkSLBG8ioHsW3Hcdhy2Vgd+wL1JpUzKfZ4JTH/j 8LP0jJmaFxKjA+6pKXk+oLoRz6OrNvu/cm8YAF82zG1YaAgMIGaGxDW45thj9pRgzYhZ EyH/77bKS/esaEcDO8G4Wt0Lo5hkN3GUwQrvYL7Oxw2iIoRlrDPl7ZzwoMggExOhUjVC JUvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=B+yGSqZ11QV/22duj6c6AAFIvmwA7gtQojZiRqNzB1A=; fh=S0zDFgaaP9YaIuUg/GQONYTzn9LkhIR5gPkXvi0vGPo=; b=zzRhB9ORYxKNye8lvQwKGF12s+WCHrfwp4NZgIcqjby4uSXq1eMhjAv0C9C2ZQWGCu tGCcx3zw1lR/TsAjeXaokBVsqOvrNrfHwXw/8CfO5uN31Hbju3bNiFj+j780D/GLqxDr qt/to9G0hWACNZQuaSxLlqmC+VWskybSteqoskANoJoC7aD9IRXubYVuEEVbPu1DYHBK cxo4p0n1FEnP7lYwbDI/EhLPFLjgw7wOWd335H+i6RtcaKCqUY9hHHjkt0IJKY1+NdtU FkR2o9Cxt8YBrSIRjZeVzmpnXYTMqEWQ9Bd7vKL4QbqwMSZzBDXl2ZFE10k0qcvphNGS eETw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=tHQiGah2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id a3-20020a056808128300b003ab97c9c5e0si427257oiw.194.2023.12.07.06.01.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Dec 2023 06:01:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=tHQiGah2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id EF0A880A23BB; Thu, 7 Dec 2023 06:01:02 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235271AbjLGOAq (ORCPT + 99 others); Thu, 7 Dec 2023 09:00:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235160AbjLGOAp (ORCPT ); Thu, 7 Dec 2023 09:00:45 -0500 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E87C5133 for ; Thu, 7 Dec 2023 06:00:50 -0800 (PST) Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-54c79cca895so11978a12.0 for ; Thu, 07 Dec 2023 06:00:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701957649; x=1702562449; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=B+yGSqZ11QV/22duj6c6AAFIvmwA7gtQojZiRqNzB1A=; b=tHQiGah2KRHocfcs6nXPssNQn+Y62cikemwlCV6p5byLra+dC7jgOXQic0KuMTf6Fg WIP6/5A0HUk3YAdiYNu/7rHIHmtFEHveSs0XkeWOAGEKw0JH0/OvtTyS1lIpMBR8UF8v Ub2xlL/xfRf5usZLfB5d6hZzJObAbQijDbFWuBe+Y2i6vNRoIQygWuXCCauWdtuaUAH9 M/hDVZidMeeyqe1mzR734Bi+tIqX5mF8NjQfQnKW5W6KaiWpauo9BOhwNYLatTT7nDgd OqjQeEeUqPCkiuCe/qesFjIVmIf40MUEQECgL5M+xmS9DDHUSjTYbwqMPmOtfwMVUvPm 33Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701957649; x=1702562449; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=B+yGSqZ11QV/22duj6c6AAFIvmwA7gtQojZiRqNzB1A=; b=nH2SoOOiG1sfoFYZL6R8ydlfDJWhX6/N8k6cPZqUrXzheWiP4cX1j5VbnHM1FVQjWn QJ8TY4lHNXFkVFLNHFL6reTDRFBQzR7LqIZmdoHnpXXdsZPsgovZW3KZA+B0gl0IBnmy dBcdVCJObR+HHD6CYXusjADTzt/rqDH9yaPYuAAjSjiawcEA4duJEc6V5/tWShwcOnaO NnqHpXATuVTqFsbwKyFzW3NSsKnAQRzueIfqLYCExs2UnNebgevkKTmyceBbWf36/abI BSVGkeVmBBhnnLZAu3VqQEDRD60jFiZIhauFaTeEeRfuiVBOXQhdgm7OHiChhyW8nzka MWcQ== X-Gm-Message-State: AOJu0YxD/bWfHhyGDfjEYxvu+EL8o8RSnRGxglTmD3+T7x/4eOqOjKTk UGmBrkrB0HSUd8xCwxKbDAYrbaZuxZEsGl83Il7s0g== X-Received: by 2002:a50:baae:0:b0:545:279:d075 with SMTP id x43-20020a50baae000000b005450279d075mr198699ede.1.1701957648485; Thu, 07 Dec 2023 06:00:48 -0800 (PST) MIME-Version: 1.0 References: <20231207094844.706407-1-agordeev@linux.ibm.com> In-Reply-To: <20231207094844.706407-1-agordeev@linux.ibm.com> From: Jann Horn Date: Thu, 7 Dec 2023 15:00:10 +0100 Message-ID: Subject: Re: [PATCH] mm: do not protect VMA lock object in vma_end_read() To: Alexander Gordeev Cc: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Suren Baghdasaryan , Waiman Long , Peter Zijlstra , Ingo Molnar , Thomas Gleixner Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Thu, 07 Dec 2023 06:01:03 -0800 (PST) On Thu, Dec 7, 2023 at 10:49=E2=80=AFAM Alexander Gordeev wrote: > In early discussion to the implementation of vma_end_read() > Jann Horn pointed out that up_read() could access the VMA > lock object after it has already been acquired by someone > else. As result, up_read() is protected with RCU read lock: > > rcu_read_lock(); /* keeps vma alive */ > up_read(&vma->lock); > rcu_read_unlock(); > > Since commit 3f5245538a19 ("locking/rwsem: Disable preemption > in all down_read*() and up_read() code paths") __up_read() > disables preemption internally and thus the need to protect > the VMA lock object does not exist anymore. I think this is a bad idea. Please don't. Yes, it looks like the (non-RT) implementation of __up_read *currently* disables preemption. But that's an implementation detail, not a documented API contract of up_read(), so there would be nothing stopping someone from reimplementing __up_read() in the future such that the preemption stuff disappears again. And from what I can tell from a quick look, the RT implementation of __up_read() does not currently give you this kind of guarantee. In my opinion, if you want to make this change, then as a prerequisite you have to get buy-in from the locking maintainers. > Link: https://lore.kernel.org/all/CAG48ez3sCwasFzKD5CsqMFA2W57-2fazd75g7r= 0NaA_BVNTLow@mail.gmail.com/ > Cc: Jann Horn > Cc: Suren Baghdasaryan > Signed-off-by: Alexander Gordeev > --- > include/linux/mm.h | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 418d26608ece..7b32bc75a4ab 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -683,9 +683,7 @@ static inline bool vma_start_read(struct vm_area_stru= ct *vma) > > static inline void vma_end_read(struct vm_area_struct *vma) > { > - rcu_read_lock(); /* keeps vma alive till the end of up_read */ > up_read(&vma->vm_lock->lock); > - rcu_read_unlock(); > } > > /* WARNING! Can only be used if mmap_lock is expected to be write-locked= */ > -- > 2.40.1 >