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 35DD2C36018 for ; Thu, 3 Apr 2025 00:23:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2972E280003; Wed, 2 Apr 2025 20:23:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2452E280001; Wed, 2 Apr 2025 20:23:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 10DF0280003; Wed, 2 Apr 2025 20:23:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E81A6280001 for ; Wed, 2 Apr 2025 20:23:03 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 00EBA58486 for ; Thu, 3 Apr 2025 00:23:05 +0000 (UTC) X-FDA: 83290832772.01.140F641 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by imf20.hostedemail.com (Postfix) with ESMTP id 429CF1C0006 for ; Thu, 3 Apr 2025 00:23:04 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=SlImDtin; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743639784; 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=VGELDGnQYr3hKRzP813UaYd/cH2T/S4uNmGRNWE+0h0=; b=nYfPKlHVqcCJXSRxLNwAZGhouHYybLRJvZiZZRv0JNJSDXFxlutAkZzVqHm21UlfOTJLTZ JScWCTnjLmSbD38/olSpC2cBsHnUECVmBuodCj+8/7KKeivwYMeLcbu5Ee23Y+zL893rQk HY/Dmck+UflUcLDCZNuw9CePa0Pjfe4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743639784; a=rsa-sha256; cv=none; b=m+A9MooSwviIjAq8CrhsRdQMqjynILx50owqJUK0s5iCiPiDmZA8wNauKtGxEiLQdUjKfN ZNojKj2BAPocHQ5JrKrfuwzurGzrnURESpCdZb7NuYHzAn37v5ZCf6k85k9TFH7aINU4uu DvXVRE6AZiOr4bPVEO83x1JQdQi0uKs= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=SlImDtin; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.41 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-391342fc0b5so246542f8f.3 for ; Wed, 02 Apr 2025 17:23:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743639783; x=1744244583; darn=kvack.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=VGELDGnQYr3hKRzP813UaYd/cH2T/S4uNmGRNWE+0h0=; b=SlImDtinNX76GaOceC6VMFnIchThpXecGmaAChSwyZP6FuZbTG43BNlSVyKk+3YYbj jcz1HY10OVNPdAHN1HNpMsBouBTbh6iH0tvadWBVEOX4cNH9wu8OF3r6I1ICwOtOwu2n iJc5DtLeMRHlcMk5xiM2NkOyMaOyPugdv/Q5s2279Rn7hoQCH95g8/r6XBOBwr8MCHy7 Zmig4UXOqZ0Z61k3J22Fv9TDMrBwmR1caGb2E3RY/yQCkvyL9nsUVOJKrF/79fR/iKeq 232U19ZnRLmq/5kMrTdMFmslqJT3NhL+RjePh9eKESUS192UehsU7SqI18AKh0R2lpIX PU9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743639783; x=1744244583; 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=VGELDGnQYr3hKRzP813UaYd/cH2T/S4uNmGRNWE+0h0=; b=dhnwZ5ZwYawiNP9DTx6DEFcWBNW0soJ9b/tTZsoWGYP8lODk1fZO1e22pwmZaOnONw K52oEUu2LWzLB6KCNBvnYWw4/fHKc6GJEOyUY4LX32wXYw658rKz0r5vDGgpi06IPlrn QceAU7yv5JwvLXY3pq9yaXFcPwVeJZG4BH8Ch6d3gK/J0ebHRtXAX/oxyTu01HsmLWAP hYBWSJx6FYe6HliDvV2YYrMYbUE4PqVUMo36UwsVFpOkAmMnt8JGtb0/eLGp6zJVmYVY YIJ+KbfiG7Jp5rHusEM+VgU1H+1utX37sxjoOitU+YCozpzUhDAuVGe9gos2FC+iGR+R c63Q== X-Forwarded-Encrypted: i=1; AJvYcCWladLo5EeeEkrF2XDoJ2unK4UxzL6xL7xSOyKWGuclymj7ZuFYjYfm3/y+/HK7hqDiEKFXFAuQHw==@kvack.org X-Gm-Message-State: AOJu0YxSwbNJbSEoFxfukDdxTRr2a+x3vTP1/BhFdRYRK46/c7AKaMO1 V6Kys//fn9A/vJf/XxTJGlE/zefF7MTcAeVKZzOh6hlelSW2gY9JKEkIpMEjVoOhLOSI+0SdcO6 u9QvOeYry37Aa2R4oJlyapupdV5w= X-Gm-Gg: ASbGncsH0IJ2PYeHnZnt823m+sVAZUbBjk8GkFa0FAwtLLgNd/KLOgnP8RqXyQMDWbr SwvNQrPV6Ff2FyZDgNSri94ge0G+nWFzwFg8qxG+Vt1brvq/kPx5/9R9NXoofIWqYHAwDtwrxOS 2He/Aw2xG8RjoqcMhfTfMteLlgFqMqEsvg6YE3Vkk3LA== X-Google-Smtp-Source: AGHT+IHKd5RDxqv01ttjKrNbPPmORqvp3dLkUjArsa0VK6F36HaF/uhY+1Q3ZCT8E7SGkkEG0BFtjxSlECoZ+K/ewmQ= X-Received: by 2002:a05:6000:1845:b0:39c:dfa:d347 with SMTP id ffacd0b85a97d-39c2f8c674emr358515f8f.2.1743639782487; Wed, 02 Apr 2025 17:23:02 -0700 (PDT) MIME-Version: 1.0 References: <20250401005134.14433-1-alexei.starovoitov@gmail.com> <20250402073032.rqsmPfJs@linutronix.de> <62dd026d-1290-49cb-a411-897f4d5f6ca7@suse.cz> In-Reply-To: From: Alexei Starovoitov Date: Wed, 2 Apr 2025 17:22:51 -0700 X-Gm-Features: ATxdqUHSEULJuOw8smbh9_BWrm-y4sLi0DDUrNw09xcGN1TrBzOoxxiAHkh30EA Message-ID: Subject: Re: [PATCH] locking/local_lock, mm: Replace localtry_ helpers with local_trylock_t type To: Vlastimil Babka Cc: Sebastian Andrzej Siewior , Linus Torvalds , bpf , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Andrew Morton , Peter Zijlstra , Steven Rostedt , Shakeel Butt , Michal Hocko , linux-mm , LKML Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 429CF1C0006 X-Stat-Signature: k8nypeqzbaw9h674od118osods1af1ic X-Rspam-User: X-HE-Tag: 1743639784-486164 X-HE-Meta: U2FsdGVkX1+oPPfYejK6XpbfXJoQm4QdWXXKgyJ9zZ5T69T5qwERy+GPiQkdbrhR/34hmRPCT10t6WIlnmMbCsmT6wVCaGd8DeelZXln0HZrA50KQHekQRdn8KKHR1Ag/79p1fIDGqbA0G1FM6E7DIeLu9GoPoyv9NRUFTUUYd3J5ASzk+NvPWIGtQjRo+D8srnM6lff3nw0YlPpTqiDNeEfAl0rvksRCOLISLmuZp1suutO+u8MOnlbRIW7z9bqZMxnUR5llTDoxfaca5Qv1uRiAPiKGubVOHk8IPsImVniwU+/gYx4N6bg6qHOBEOHfFaxsfF4i5k7PMDuDUrWHeqhq41Hh4LNeWzE4LSn11XxpyXQ+XKb5kf5JUxb5m7LypX6eFsZqq11+WLoiHzCLf+re6YEWgMwHhXOzd3jbKFmT+cS7ysHqe7Y1ROh73ofLKMRU7dHQ/la0RfPixGH7YHAPQOswvyJUEPzKs/8BfIILTXVfMqntceKDhS8mhXGWkAQpdGHMpmYzuZuCZeX6BVpLAYZRBDG8i0oNCGeB2JyuxVC1qycYVWi5YLjS0RoszJvJlQDRGC8yJ2bw5nRBwFeVwnrxZQyANlL4MCGFu93v6lvcA9+iCWw+Y6t6KENk2e9mx31d3eTnpHgdfTetddtUxpIRt0MmY/b1G7pvUyYouJvXoH2nCSu7i5uMpfJgMYDJNFxm9qybAXsLGTVVVY/PJ0p541uPPK+T7Oa2W385GHHFEhlbndWmmLEQg1c81ugeUxM8AePW4cPHVFCWHZpgkLunZrYBZ/Ex780G9CZb5NG/jlHWl5K/6jksDOgGlJdgBmzUVWIJExzCT+Qh0X2G42u/FM4UzAAMGm7q0hIFEfG+1gCp7Nt8BhsO9nJiesq+YZagDu2BW6vIiIhICxaKNuTCgXo6a5hGzb5X2f3k0dDbG3AkRc/UKtBRVUV2n3bEVj/vdrtcEVlvpJ 2Z+V9K8J cVJXs1J9qibyzdJgBXhF+8SPDP8hR8sFwkOdrPyrnLNozbf3juWCjOKgRag== 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: List-Subscribe: List-Unsubscribe: On Wed, Apr 2, 2025 at 2:35=E2=80=AFPM Alexei Starovoitov wrote: > > On Wed, Apr 2, 2025 at 2:02=E2=80=AFAM Vlastimil Babka w= rote: > > > > On 4/2/25 09:30, Sebastian Andrzej Siewior wrote: > > > On 2025-03-31 17:51:34 [-0700], Alexei Starovoitov wrote: > > >> From: Alexei Starovoitov > > >> > > >> Partially revert commit 0aaddfb06882 ("locking/local_lock: Introduce= localtry_lock_t"). > > >> Remove localtry_*() helpers, since localtry_lock() name might > > >> be misinterpreted as "try lock". > > > > > > So we back to what you suggested initially. I was more a fan of > > > explicitly naming things but if this is misleading so be it. So > > > > > > Acked-by: Sebastian Andrzej Siewior > > > > > > While at it, could you look at the hunk below and check if it worth i= t? > > > The struct duplication and hoping that the first part remains the sam= e, > > > is hoping. This still relies that the first part remains the same but= =E2=80=A6 > > > > I've updated your fixups to v2 > > https://lore.kernel.org/all/20250401205245.70838-1-alexei.starovoitov@g= mail.com/ > > Sebastian, Vlastimil, > Thanks for the fixups. Folded. I was about to send v3, but decided to play with my stress test a bit more and it caught this race: [ 18.114617] DEBUG_LOCKS_WARN_ON(l->owner) [ 18.114717] WARNING: CPU: 0 PID: 2159 at include/linux/local_lock_internal.h:46 try_charge_memcg+0x73b/0x7b0 [ 18.114733] RIP: 0010:try_charge_memcg+0x73b/0x7b0 [ 18.114769] [ 18.114774] __memcg_kmem_charge_page+0xbe/0x390 [ 18.114778] try_alloc_pages_noprof+0x11e/0x280 [ 18.114782] nmi_callback+0x55/0xc0 [bpf_testmod] ... [ 18.114820] end_repeat_nmi+0xf/0x18 [ 18.114822] RIP: 0010:refill_stock+0xef/0x1e0 [ 18.114832] ? refill_stock+0xef/0x1e0 [ 18.114834] [ 18.114834] [ 18.114835] obj_cgroup_uncharge_pages+0x44/0x170 [ 18.114837] __memcg_kmem_uncharge_page+0x52/0x180 [ 18.114839] __free_frozen_pages+0xce/0x6c0 The same issue is present in the __localtry_unlock*()... these two should be done in the opposite order: WRITE_ONCE(lt->acquired, 0); local_lock_release(<->llock); Though IRQs are still disabled at this point the local_trylock() from NMI will succeed and local_lock_acquire(l); will warn. The following fix will be included in v3: diff --git a/include/linux/local_lock_internal.h b/include/linux/local_lock_internal.h index e41ca62fadea..bf2bf40d7b18 100644 --- a/include/linux/local_lock_internal.h +++ b/include/linux/local_lock_internal.h @@ -169,13 +169,13 @@ do { \ \ l =3D (local_lock_t *)this_cpu_ptr(lock); \ tl =3D (local_trylock_t *)l; \ + local_lock_release(l); \ _Generic((lock), \ local_trylock_t *: ({ \ lockdep_assert(tl->acquired =3D=3D 1); = \ WRITE_ONCE(tl->acquired, 0); \ }), \ default:(void)0); \ - local_lock_release(l); \ } while (0) After that the stress tester runs cleanly.