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 CB10FEB64DA for ; Wed, 12 Jul 2023 19:59:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 32FA38E0007; Wed, 12 Jul 2023 15:59:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2DF9F8E0002; Wed, 12 Jul 2023 15:59:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1A86B8E0007; Wed, 12 Jul 2023 15:59:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 0B7908E0002 for ; Wed, 12 Jul 2023 15:59:27 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id ACDA414037D for ; Wed, 12 Jul 2023 19:59:26 +0000 (UTC) X-FDA: 81004024332.09.1C04711 Received: from mail-yb1-f176.google.com (mail-yb1-f176.google.com [209.85.219.176]) by imf16.hostedemail.com (Postfix) with ESMTP id EE6BA180005 for ; Wed, 12 Jul 2023 19:59:24 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=nC5nFMy0; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of surenb@google.com designates 209.85.219.176 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=1689191965; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=K5AA4rL2AcSi7+uYULakjTXSu8XsdWi9x7vKl+lejZE=; b=s6x5+nJY+a8ENEaeYkKBkLfRjemRrOwPCfN7yJu1tHOFbCfyXgaJpwfGsp38nR/n3sYGx0 ds93pQnjV1nHJ0Si3mES+EcOeu1NRinGxiaLyPzsqOW6jQwWPSElI+6pQ10fcsdQYPLFlg Hp+Ikrx8k1CS52ykNDnQs1y1/bLnNLc= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=nC5nFMy0; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf16.hostedemail.com: domain of surenb@google.com designates 209.85.219.176 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689191965; a=rsa-sha256; cv=none; b=RSRWjPtqDsaaoJxDKHoeboiOc7ofdtt8+O5koyamSZDNSyh8EC1hy/OFArH5YPKvsIT1mu Rvaex66GGv9YMYLsyGET4nyVumlPOEmDVasenNpOWlrFtqz8zERLgyDebLO7WiZF0/urA+ crX9hYQgvPFoobrWgl7CeSNDgDnpyF4= Received: by mail-yb1-f176.google.com with SMTP id 3f1490d57ef6-c5cf26e9669so6859372276.0 for ; Wed, 12 Jul 2023 12:59:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689191964; x=1691783964; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=K5AA4rL2AcSi7+uYULakjTXSu8XsdWi9x7vKl+lejZE=; b=nC5nFMy0RK13HTfD7TIYrzNNF3L5XA5wVx9IMHn4hpfRpuHeqbtawcQtHtuZQKIp5Q euABrqaWylT0VSEaLnmbkndxYmvl4idJX7UfIBN2QKCMe4xUlyMw9kNVB0R4IOTgNaY6 nN8G5uCX2knZNLtBvl17Z9qRjVNMB/8dnZcfdHHclt75OnB0jc0cdtm3itIw9zJE9YkG VYlrUTLK3d5anl3MhUqNYcedusG8vZaFMG7S0dAduWjM9wD0u5AOD4cTkuGwyO7JIIRk jtQcl0q6WGVamYzV1QgzjIQTTdH7sFNsSpSkSRUXHMNYl6SRuF7tiE7f6O/WeQ1Mro2S ONIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689191964; x=1691783964; h=content-transfer-encoding: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=K5AA4rL2AcSi7+uYULakjTXSu8XsdWi9x7vKl+lejZE=; b=NysKQxmM2jt3G88EqFSvBulp8i8DsF1CaAX8qrdyijcd/iWQ3mW/Xs3wUdIdO6NY0k 4jWhLl0uysFNfW9I+FbiIykc2a5GMZuftKgFcbNdv847kfBexEsrGo/QY3qMKxnPBBGH 3x1cgm/BLFExVzEAlAe6HVeRklJD5QA9/N9s11kL4h0KRyfBtIBW8KHYIXtyz+WYBD4E w2whl1Om7v7KrXwjnbRkr13oE+0N7GxBG5rbR7SwBpHs6vWC0Ju3PBCMak1GHS2j+ESJ PuczBTX/lSysHslcfu6K4gR7pbwUAJ1JCASuZg5nTyloT6c2Fen2RLqf7U6RG2h+JPGc ZQdQ== X-Gm-Message-State: ABy/qLb2ElXsZiifl7Ddk9UhF/7UOQcFOb0ulZJGRysNHWcut7BfvpiL Vf4dAMIkWmwmviMzpIpzBv/VzH7IasDaRnWEDT/WHg== X-Google-Smtp-Source: APBJJlGC9S/kz9UBLmMSKmJVONdzMJEiaA0H6iplLCFZa/WSUnv/1JLZwEU6YJ/twV+0hVq8btsArutrjPe0NhYZfEk= X-Received: by 2002:a25:21c6:0:b0:c90:4a5d:6f32 with SMTP id h189-20020a2521c6000000b00c904a5d6f32mr7212923ybh.20.1689191963795; Wed, 12 Jul 2023 12:59:23 -0700 (PDT) MIME-Version: 1.0 References: <20230712022620.3yytbdh24b7i4zrn@revolver> <20230712153050.gm57uee23ykm3srk@revolver> In-Reply-To: From: Suren Baghdasaryan Date: Wed, 12 Jul 2023 12:59:12 -0700 Message-ID: Subject: Re: lockdep issue with per-vma locking To: "Liam R. Howlett" , Suren Baghdasaryan , linux-mm@kvack.org, willy@infradead.org, Laurent Dufour , Michel Lespinasse , Jerome Glisse , Vlastimil Babka , "Paul E. McKenney" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: EE6BA180005 X-Stat-Signature: ecf5eqxjutnjzrxkpayjap1i3s3byt4w X-Rspam-User: X-HE-Tag: 1689191964-848892 X-HE-Meta: U2FsdGVkX196nt/vqF0HYUAe+FYRbDWtNE9aq3+q4fwhVYokfslDJ2sYOK5kc5dn0DE1yaydrXbkLbQZ5u+6Hpi9jvCAExDqojWRBJJbZRmWGLXq0Li2h452VPl+ePPWts0XI42l/AKl5xtS36DI3tQSGOXdkQsmvywqjayWED6wKycOWQ6VOUAS/iy6OPTDuLmtNbKhSABz4nUrvoiAdh8joiKV4G95uT5USHEUaS+f7efwFGCtpSvk3XPwjfgMOOcP4XwOkNHplghtVdS5NEQ+5GC1P7o8Rfk1Wo4gLue+DM8UWugj6sdqBjJHg5SF8Rw1uxda3oz4Ok7d6rrf1LdlT0rxQxp9oUE63+Hylcs7t8FNtly9a8rvLBnhZM52bkgTUQUIVP+vHd6ME6+bVk9rkguqrE3Ak3rdNJPbWFR6mJjB0S2aiLkLBQRHfFSZzC+jrr+/2TCDMpTJz9/FAsACoUayFkJxn/k8AK2Ll6Noq44WkiRYLSauicVaAJ9ZqpA2W5WHz66yX2bhg0vemdiwCLdIIugEAuByH2LqE0JeqVDlBfPU59J3e4sU481rqSWdg4M1NWgVVEyZtIyWsMrGWBNCFxQYvvOazVV9nVvXRfIAev2hoTKrhPCAsFPdgQsaN+XUFZFqMX1cPCPxGHbdrjlrGBErWOvD5zHeqii3UaB8XlyaiO3Og4V5lWFDWglJ5nltaTuvK8zB319OsAhEBp07Pr57VBqC//7pP/L25MhmBWeI9ZPm6Ju4G9Iy5biPbG6gHzFKAN6jRl8aBCT3sMgu++qYZ7QrWJtDEFhy+OBPn3BmWIVKVaCDubTQaSXPP1CZVYZaLn+0RwyG+Hun9GQpKha7fjnVpLMJv1McqslIJJwpXMZiIjAIys1ZVG0Sm4jZstbxbOqfQH4VgGwaqONpTiMu4/NtjkGmoiJlwx8SenP7rM0Q1tEkKcd3QP3iqsblyP7zra/yGmn 5nwn9JvY k0CkEm761Nw2/uO2jN89RVit+DFF4VhsPtjpzUDFkka0//GCU4M3bPTqCB9XDSspkhjDErIj50IQN9MxBUyAgyH6gmAWoFVdfE5Feu/XlWI2TrwqWMrKiaMzIcqJI4Yed8nCkBhyzXZ67LwjAi0h2ET8WvTBtHtNS2jf1osskp4Ev7NVTVAby46E9OcxkePaGTza+xwHR38+nmnfjKN+hLgVUWOSfOChSN9/JVy2G59FQ495n+/IGw1MDAC8S7r+44HDa+/Ri3suAgSRmemQpFs5fiP2mkk8FSqKzZRxKxa6ow1nxsGMkmzrZ78jBEyjSirp1CNZXPCvuHTE= 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: On Wed, Jul 12, 2023 at 8:42=E2=80=AFAM Suren Baghdasaryan wrote: > > On Wed, Jul 12, 2023 at 8:30=E2=80=AFAM Liam R. Howlett wrote: > > > > * Suren Baghdasaryan [230712 11:15]: > > > On Tue, Jul 11, 2023 at 7:26=E2=80=AFPM Liam R. Howlett wrote: > > > > > > > > Suren, > > > > > > > > When running kselftest mm, I believe I've come across a lockdep iss= ue > > > > with the per-vma locking pagefault: > > > > > > > > [ 226.105499] WARNING: CPU: 1 PID: 1907 at include/linux/mmap_lock= .h:71 handle_userfault+0x34d/0xff0 > > > > [ 226.106517] Modules linked in: > > > > [ 226.107060] CPU: 1 PID: 1907 Comm: uffd-unit-tests Not tainted 6= .5.0-rc1+ #636 > > > > [ 226.108099] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), = BIOS 1.16.0-debian-1.16.0-5 04/01/2014 > > > > [ 226.109626] RIP: 0010:handle_userfault+0x34d/0xff0 > > > > [ 226.113056] Code: 00 48 85 c0 0f 85 d4 fe ff ff 4c 89 f7 e8 bb 5= 8 ea ff 0f 0b 31 f6 49 8d be a0 01 00 00 e8 0b 8b 53 01 85 c0 0f 85 00 fe f= f ff <0f> 0b e9 f9 fd ff ff 49 8d be a0 01 00 00 be ff ff ff ff e8 eb 8a > > > > [ 226.115798] RSP: 0000:ffff888113a8fbf0 EFLAGS: 00010246 > > > > [ 226.116570] RAX: 0000000000000000 RBX: ffff888113a8fdc8 RCX: 000= 0000000000001 > > > > [ 226.117630] RDX: 0000000000000000 RSI: ffffffff97a70220 RDI: fff= fffff97c316e0 > > > > [ 226.118654] RBP: ffff88811de7c1e0 R08: 0000000000000000 R09: fff= fed1022991400 > > > > [ 226.119508] R10: ffff888114c8a003 R11: 0000000000000000 R12: 000= 0000000000200 > > > > [ 226.120471] R13: ffff88811de7c1f0 R14: ffff888106ebec00 R15: 000= 0000000001000 > > > > [ 226.121521] FS: 00007f226ec0f740(0000) GS:ffff88836f280000(0000= ) knlGS:0000000000000000 > > > > [ 226.122543] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > > > [ 226.123242] CR2: 00007f226ac0f028 CR3: 00000001088a4001 CR4: 000= 0000000370ee0 > > > > [ 226.124075] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 000= 0000000000000 > > > > [ 226.125073] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 000= 0000000000400 > > > > [ 226.126308] Call Trace: > > > > [ 226.127473] > > > > [ 226.128001] ? __warn+0x9c/0x1f0 > > > > [ 226.129005] ? handle_userfault+0x34d/0xff0 > > > > [ 226.129940] ? report_bug+0x1f2/0x220 > > > > [ 226.130700] ? handle_bug+0x3c/0x70 > > > > [ 226.131234] ? exc_invalid_op+0x13/0x40 > > > > [ 226.131827] ? asm_exc_invalid_op+0x16/0x20 > > > > [ 226.132516] ? handle_userfault+0x34d/0xff0 > > > > [ 226.133193] ? __pfx_do_raw_spin_lock+0x10/0x10 > > > > [ 226.133862] ? find_held_lock+0x83/0xa0 > > > > [ 226.134602] ? do_anonymous_page+0x81f/0x870 > > > > [ 226.135314] ? __pfx_handle_userfault+0x10/0x10 > > > > [ 226.136226] ? __pte_offset_map_lock+0xd4/0x160 > > > > [ 226.136958] ? do_raw_spin_unlock+0x92/0xf0 > > > > [ 226.137547] ? preempt_count_sub+0xf/0xc0 > > > > [ 226.138011] ? _raw_spin_unlock+0x24/0x40 > > > > [ 226.138594] ? do_anonymous_page+0x81f/0x870 > > > > [ 226.139239] __handle_mm_fault+0x40a/0x470 > > > > [ 226.139749] ? __pfx___handle_mm_fault+0x10/0x10 > > > > [ 226.140516] handle_mm_fault+0xe9/0x270 > > > > [ 226.141015] do_user_addr_fault+0x1a9/0x810 > > > > [ 226.141638] exc_page_fault+0x58/0xe0 > > > > [ 226.142101] asm_exc_page_fault+0x22/0x30 > > > > [ 226.142713] RIP: 0033:0x561107c4967e > > > > [ 226.143391] Code: 48 89 85 18 ff ff ff e9 e2 00 00 00 48 8b 15 4= 9 a0 00 00 48 8b 05 2a a0 00 00 48 0f af 45 f8 48 83 c0 2f 48 01 d0 48 83 e= 0 f8 <48> 8b 00 48 89 45 c8 48 8b 05 54 a0 00 00 48 8b 55 f8 48 c1 e2 03 > > > > [ 226.145946] RSP: 002b:00007ffee4f22120 EFLAGS: 00010206 > > > > [ 226.146745] RAX: 00007f226ac0f028 RBX: 00007ffee4f22448 RCX: 000= 07f226eca1bb4 > > > > [ 226.147912] RDX: 00007f226ac0f000 RSI: 0000000000000001 RDI: 000= 0000000000000 > > > > [ 226.149093] RBP: 00007ffee4f22220 R08: 0000000000000000 R09: 000= 0000000000000 > > > > [ 226.150218] R10: 0000000000000008 R11: 0000000000000246 R12: 000= 0000000000000 > > > > [ 226.151313] R13: 00007ffee4f22458 R14: 0000561107c52dd8 R15: 000= 07f226ee34020 > > > > [ 226.152464] > > > > [ 226.152802] irq event stamp: 3177751 > > > > [ 226.153348] hardirqs last enabled at (3177761): [] __up_console_sem+0x59/0x80 > > > > [ 226.154679] hardirqs last disabled at (3177772): [] __up_console_sem+0x3e/0x80 > > > > [ 226.155998] softirqs last enabled at (3177676): [] irq_exit_rcu+0x94/0xf0 > > > > [ 226.157364] softirqs last disabled at (3177667): [] irq_exit_rcu+0x94/0xf0 > > > > [ 226.158721] ---[ end trace 0000000000000000 ]--- > > > > > > > > > > > > CONFIG_PER_VMA_LOCK calls handle_mm_fault() in mm/memory.c > > > > handle_mm_fault() may have an outdated comment, depending on what "= mm > > > > semaphore" means: > > > > > > > > * By the time we get here, we already hold the mm semaphore > > > > > > > > __handle_mm_fault+0x40a/0x470: > > > > do_pte_missing at mm/memory.c:3672 > > > > (inlined by) handle_pte_fault at mm/memory.c:4955 > > > > (inlined by) __handle_mm_fault at mm/memory.c:5095 > > > > > > > > handle_userfault+0x34d/0xff0: > > > > mmap_assert_write_locked at include/linux/mmap_lock.h:71 > > > > (inlined by) __is_vma_write_locked at include/linux/mm.h:673 > > > > (inlined by) vma_assert_locked at include/linux/mm.h:714 > > > > (inlined by) assert_fault_locked at include/linux/mm.h:747 > > > > (inlined by) handle_userfault at fs/userfaultfd.c:440 > > > > > > > > It looks like vma_assert_locked() is causing a problem if the mmap = write > > > > lock is not held in write mode. > > > > > > > > It looks to be an easy fix of checking the mmap_lock is held in wri= te > > > > mode in every other call location BUT the vma_assert_locked() path? > > > > > > Thanks Liam! Yes, the fix is indeed very simple. I missed the fact > > > that __is_vma_write_locked() generates an assertion, which should > > > probably be changed. I believe the same assertion is found by syzbot > > > here: https://lore.kernel.org/all/0000000000002db68f05ffb791bc@google= .com/#t > > > > Yeah, looks the same. Sorry for the noise. > > Not at all! I wouldn't look for it if you did not report :) > Thanks! > > > > > > I'll post a fix shortly. > > > BTW, this is happening only in mm-unstable, right? > > > > Well, I tested it only in mm-unstable.. https://lore.kernel.org/all/20230712195652.969194-1-surenb@google.com/ should fix the issue. I was able to reproduce the warning and did not see if after applying the fix. > > > > It came up while i was testing an unrelated fix for another kselftest:m= m > > that I broke. > > > > > > Thanks, > > Liam