From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 648E2EB64DA for ; Wed, 12 Jul 2023 20:01:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BBA818E0008; Wed, 12 Jul 2023 16:01:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B6A8F8E0002; Wed, 12 Jul 2023 16:01:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A0C248E0008; Wed, 12 Jul 2023 16:01:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9300B8E0002 for ; Wed, 12 Jul 2023 16:01:01 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 0E45112037E for ; Wed, 12 Jul 2023 20:01:01 +0000 (UTC) X-FDA: 81004028322.30.15AB851 Received: from mail-yb1-f175.google.com (mail-yb1-f175.google.com [209.85.219.175]) by imf02.hostedemail.com (Postfix) with ESMTP id B7B0E80029 for ; Wed, 12 Jul 2023 20:00:52 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=1wEQWwA1; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of surenb@google.com designates 209.85.219.175 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689192052; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=gTJiVQesou1SgmF7llvKQyMv+UdaLm0f7p83u13+5xg=; b=101XEcx/27azt2h/WDzItQAckzHbO/kxykAXIPZrKqyPMpSe08tzUolN2OGl8Rf1GbQcpf 4YrJtAPhPHFrlMsyXmXKqruHM3EqJd8yEbUYtuc+olvlgu2w5ak8sssGxPMH9qvrpHDvq1 0K2za/1Kq6aU5dNvClAXP3iLX1cZuH8= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=1wEQWwA1; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of surenb@google.com designates 209.85.219.175 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689192052; a=rsa-sha256; cv=none; b=7OYUK/sqLDh++8uyWlXqMP2R7McwnAosYIQkm24hqmebjH3buROvkP/f5m6jllbdevr8CF 2S8e0DUJSAQ6wjhxo/hEAuxcmyoTeLwpNmmSQwpoqrPYVYI32UHy6UHDDlFm50jYsrxq41 KTvyX+4+OvxM4eunMpTHecQKm7XT9Zg= Received: by mail-yb1-f175.google.com with SMTP id 3f1490d57ef6-c11e2b31b95so8082465276.3 for ; Wed, 12 Jul 2023 13:00:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689192051; x=1691784051; 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=gTJiVQesou1SgmF7llvKQyMv+UdaLm0f7p83u13+5xg=; b=1wEQWwA1pT2jGY0r7ydRYYJYo3V9/IHs7e9LWlLMS8rqAIlHAy3gLDGdi9lrycSGtu kpzHYZAx47OXFAz2Hbyg14x2k+M0yMr0b4uMoPEX05dfQpUORe1SXIj4IzeZG5GDe8UZ 8PFbNrU0z3u8nYBMJDaLPONQrTSA9TE9raToi4W0eh0cckJtVQsdD0hZJpZbsOZhIW+Z z+He6VNaEXeiiUEXCdYwiwbvg7nE+1yGeZhs7c+VuSDCTi06q/WKoioCfNytNcdrj/IF yiqH6K3sk1shOUigIhNCaMQlG7VWam1yHEQmhSJ8uj142nj1xzERbsz+HzJFaJGKPhbp RzbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689192051; x=1691784051; 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=gTJiVQesou1SgmF7llvKQyMv+UdaLm0f7p83u13+5xg=; b=NYoEDwoImVUaApHccq9ozcVF/KkFij5WmKnuK53alEjBS/qxtG3RLIzWlnrTT26i7R xmmfNjDs4ynesA9uCJzs6BMR1EJV3sDDJcpJ1M+HN62MHzEHYxUJ+6ejWltX6GT+EzSU nGhuQkedN0fQ7hEZ5SxC/240UeluWLYLOTlKcUMBbI5LQPrESeTGXpvCd9rrz+TZ4r8e JTBzjGRksd7LKVx5Ix1eqv2RjoDMlZeyth2bTFZy7k/RzJKq7Dll4PCnHgN4W8Ah2aix HX6+P7NQkbbk3GvCv5QvQlNk0kbj0exG5tapVl46VEmWTzX+Zzw2Y6YeadrfplpZe+X2 TtFA== X-Gm-Message-State: ABy/qLY+J6ARfMtl+2RDhv8JcFtSdnLIaqt+tIGwBpaceBHbCgxjqJXu axmdv4uIzbthtJhN+Xx4Nlk2Wp9Jg0GKM9YDNtbPdg== X-Google-Smtp-Source: APBJJlH29LWXVQfDA//ZifgMVnhAvikiS3IILs0UlpGo8FjXZuugWhPwijyqz1ggKx7dcrqXF8BQvMC6CdDB/MFmYnY= X-Received: by 2002:a25:5f06:0:b0:cab:4a58:2535 with SMTP id t6-20020a255f06000000b00cab4a582535mr1307273ybb.17.1689192051154; Wed, 12 Jul 2023 13:00:51 -0700 (PDT) MIME-Version: 1.0 References: <20230712195652.969194-1-surenb@google.com> In-Reply-To: <20230712195652.969194-1-surenb@google.com> From: Suren Baghdasaryan Date: Wed, 12 Jul 2023 13:00:40 -0700 Message-ID: Subject: Re: [PATCH 1/1] mm: fix a lockdep issue in vma_assert_write_locked To: akpm@linux-foundation.org Cc: Liam.Howlett@oracle.com, linux-mm@kvack.org, willy@infradead.org, ldufour@linux.ibm.com, michel@lespinasse.org, jglisse@google.com, vbabka@suse.cz, paulmck@kernel.org, brauner@kernel.org, linux-kernel@vger.kernel.org, syzbot+339b02f826caafd5f7a8@syzkaller.appspotmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: B7B0E80029 X-Stat-Signature: smq9xfbwpg3nqkr9mc334mwjgnojgg3p X-Rspam-User: X-HE-Tag: 1689192052-284960 X-HE-Meta: U2FsdGVkX1+Nws3UdUUZO2SsTq1b1+epSb3wz4gHhuGLfymdftGSsTuqI54P6XlDetU7BI4jbCimaWIfc7FtNTC/DDZsOtij6haHayt6cA0Jy6tMRt5AGb8aQf9TRcBmqhkxNeuAWBHrxI5d/s0ypS0PTHU+wra/f7CybTcouXWFjyzI5S1qq8fh/jN6hsFit7pRD/5qbCC9Qg0+XDmY7IPT8T76MuyHtYpTAWk/iyAAUGbGv5oiApSrJ6mvCY/3TIhz6++gtHXJjBwJkIzQSsxiBNCivb33XsACXZxnv+dZQeQC9GvPEURObSk0RJHDywq8HODMks8p3S0FzU0dfhgioQ9jCZLM6ZIrkGhnYNtEo47YOTn9mdF9UkhMjN0A2/qp8ci4z1o80g4+6U+H0/nYsfLTm9vcj0SOagIzwiF4UbMcURXGTVQIJNq3rmyn1O7ixyaIn8optusYPKoEVNbgcV1BFAYpwx6xLe3J+obMl3dIHtQkah4pBEa4Ek4ur33FAV3oHaiHW2RkQJY+jeqkUccJGYH2r6neOCpmXqelDoS4cllBgIL1qZRKTDqjv8f0knonHscvqZT8pGk6G276wUifRWMeUnpYvJwVFe1WaPPDr/Vnm5OwGUTC1LApEw+otC4zJH93FKqgKDQ3BpeNqT/L4RqGLurISoWdimsvACnYt8Lor2XwBJbOq0KB+xJCK5enW31mQyNHew/HTogw3hza2nX0VE5DYapG/x9xqRd9e21JN5JP9gGRK/EzwoC34AyccHu9BkNk1R8iPVz5AnmXh7QX+4JfD5MKhIgf9hb5mdmPqCkfeevMq1aJFJqVzbUYewv4ZiY9Ngy5Ms1iA3fseuHJ1bf5i0idSc33T3l6JcBlugFo0vIeJZdl/uG7324ihD4prktqL4AZY/kaKnNREoLaSoNChZ/quJgxGcFx2ZpKlTOA88gQnKbDrDz5sDQ35Rn5CvjiQJv 5vZ/1y2y oxGkfFpqhvTe8/7hidPB+BA5oTMZuQPj9DKEiN4/iKIuX1SdM24wbYbm5oTiSH3WGchv2Qqo7Ej7Nt+d0ch57TzOe/spDni/c2u54QpOXJ2XahfzZ1cDrI1EFrRTbtdTkiWF8GcBUq2xlNBO9oRebDpj39ts5Kvk1t7R+kcKq1WxmbPH7uHQgcA115AvEEeETVWaqDxEZ3mX2uZFpsenLIW7dG+N11hTjCMEgEsIs0x/UfT/jhwa7TPaHZZy37Rxb7RVIcggvIewGk1d9d6Ux+V8tGt4Ag/a0X1c6NtOg6p7dcgZMbgIyNfAGjee4aAOQJD1RUl7hXMYOVr04WK4YWmJ4J9jANatcyrQfE+gdkcEVKG21kie3i3osz4IAX3l7d6Hni6TiDaq+uDkrx1aI0fqGJgyLAZZaNh+sgt9HfyZyduuQ6g1wBX199M/qNJAimHaoZPWXyhz4umJjebHmvKjYc4N3PNFfirIMawMCLWQHWmZ+NcQGrMNRlGnGbWtfIc0exLPRFOPe5xu1pRASuH9OyasmYWmGSzjh X-Bogosity: Ham, tests=bogofilter, spamicity=0.000058, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Jul 12, 2023 at 12:56=E2=80=AFPM Suren Baghdasaryan wrote: > > __is_vma_write_locked() can be used only when mmap_lock is write-locked > to guarantee vm_lock_seq and mm_lock_seq stability during the check. > Therefore it asserts this condition before further checks. Because of > that it can't be used unless the user expects the mmap_lock to be > write-locked. vma_assert_locked() can't assume this before ensuring > that VMA is not read-locked. > Change the order of the checks in vma_assert_locked() to check if the > VMA is read-locked first and only then assert if it's not write-locked. > > Fixes: 50b88b63e3e4 ("mm: handle userfaults under VMA lock") > Reported-by: Liam R. Howlett > Closes: https://lore.kernel.org/all/20230712022620.3yytbdh24b7i4zrn@revol= ver/ > Reported-by: syzbot+339b02f826caafd5f7a8@syzkaller.appspotmail.com > Closes: https://lore.kernel.org/all/0000000000002db68f05ffb791bc@google.c= om/ > Signed-off-by: Suren Baghdasaryan Should have mentioned that this patch is for mm-unstable. > --- > include/linux/mm.h | 16 ++++++---------- > 1 file changed, 6 insertions(+), 10 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 9687b48dfb1b..e3b022a66343 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -668,6 +668,7 @@ static inline void vma_end_read(struct vm_area_struct= *vma) > rcu_read_unlock(); > } > > +/* WARNING! Can only be used if mmap_lock is expected to be write-locked= */ > static bool __is_vma_write_locked(struct vm_area_struct *vma, int *mm_lo= ck_seq) > { > mmap_assert_write_locked(vma->vm_mm); > @@ -707,22 +708,17 @@ static inline bool vma_try_start_write(struct vm_ar= ea_struct *vma) > return true; > } > > -static inline void vma_assert_locked(struct vm_area_struct *vma) > +static inline void vma_assert_write_locked(struct vm_area_struct *vma) > { > int mm_lock_seq; > > - if (__is_vma_write_locked(vma, &mm_lock_seq)) > - return; > - > - lockdep_assert_held(&vma->vm_lock->lock); > - VM_BUG_ON_VMA(!rwsem_is_locked(&vma->vm_lock->lock), vma); > + VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma); > } > > -static inline void vma_assert_write_locked(struct vm_area_struct *vma) > +static inline void vma_assert_locked(struct vm_area_struct *vma) > { > - int mm_lock_seq; > - > - VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma); > + if (!rwsem_is_locked(&vma->vm_lock->lock)) > + vma_assert_write_locked(vma); > } > > static inline void vma_mark_detached(struct vm_area_struct *vma, bool de= tached) > -- > 2.41.0.455.g037347b96a-goog >