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 95C83E77184 for ; Thu, 19 Dec 2024 12:30:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2B91B6B0082; Thu, 19 Dec 2024 07:30:27 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 269246B0083; Thu, 19 Dec 2024 07:30:27 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 131DA6B0085; Thu, 19 Dec 2024 07:30:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id E660F6B0082 for ; Thu, 19 Dec 2024 07:30:26 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 771A61215A9 for ; Thu, 19 Dec 2024 12:30:26 +0000 (UTC) X-FDA: 82911639300.20.BA7E369 Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by imf05.hostedemail.com (Postfix) with ESMTP id 6E80A100011 for ; Thu, 19 Dec 2024 12:29:21 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=br5VL1Na; spf=pass (imf05.hostedemail.com: domain of ubizjak@gmail.com designates 209.85.208.170 as permitted sender) smtp.mailfrom=ubizjak@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1734611399; 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=+CSrGUH3NrD18LyCEhcV9StUyvJblY2gP/yLohuQHeo=; b=hrJqAjjYhNll696bLNdzpN2GMrAIV3oePi8UVL7igiN7AK3pySmfnuQhnex4bKRIDB7EMb tKpGClmiiT1fxxEg0SdHi/Z+eiaHzBlo4HL2jBd4kazjVrTp1bT/j09JN4KqduaBFPvyzC nHwQkeckpCMMfnbr+N+qWqoBGeaxYwA= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=br5VL1Na; spf=pass (imf05.hostedemail.com: domain of ubizjak@gmail.com designates 209.85.208.170 as permitted sender) smtp.mailfrom=ubizjak@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1734611399; a=rsa-sha256; cv=none; b=lfcuixHiySsfh9sZ5vuY4wjXNsaBnR6IyuorIKHkC8YKy3CdPs1wUozOCGudQoZUSQ9sg4 Xa4AIR8xGwgCtBmMuNJ2wKfrbRcsrionl7n5KkmZlOV+onWkYzD90f140yE2DQotwSOBQU kwuod31fANXzzwv+Mr2Y/V/+oXXVRD8= Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-300479ca5c6so8158521fa.3 for ; Thu, 19 Dec 2024 04:30:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1734611423; x=1735216223; 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=+CSrGUH3NrD18LyCEhcV9StUyvJblY2gP/yLohuQHeo=; b=br5VL1Na4FcK+cBbl6hMICaocCV2jway9BVHNiwvYphMyg8263Y55WT8aXdoy7c5kp Hj8zvgXPODzd3AnMvZd5rHXdW8+vmOOrQlo/jSec90zxCcky4L86W4yIfnJQJTbEJ7x5 xYAm4OWPm3RB9OeDvs9vFUsx3laW5wFlVkGjoksM5yDSx5lY+1wpI90Hqu/q7wIO3EUl SiImRyFnf2Hmt27A7OB55DJhi0syhPIe5vR4F72TK+yQ54XM5ZBf+2xBKPbCEQH6WsBC ZWCaJEx7ELm5xhGNmPHzuZmAXn9tUsgTIuWDz4i5Qiq+8+G8hT+f3gmQ0SGSoUOzfbg0 Fh9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734611423; x=1735216223; 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=+CSrGUH3NrD18LyCEhcV9StUyvJblY2gP/yLohuQHeo=; b=iQE4ZwQtZhHz/MwkKe7tuDQn6peZc011kFgfFl03wwIJGSQGEeTU9Ckh9HZVXJEpX6 ynaNPqLyBz3PCGXVBSIuDG5YyUs8U1Ll8JWb1ZM0na0FNpiG/WEjv1p4n8i1FeWvDr92 c8QvzE8EMveWQXr6n5itMRFVcAGQ9QCmVHc2LSbWmAsj+rJQZOyLyezFuOvtvn9Cdfxu IqKHSUnrEU8jJlHQnQu4XkG4eXL64FllQvvhzXxc7wr2Ki/ZFiJjUr/eWE46HngXh9jM J3DLybkEbFeO67lydVxYk56NV87FV/pJ1AiwCm1VifGWtTo90Biz5neNa16l5xazaA2/ 98Fw== X-Forwarded-Encrypted: i=1; AJvYcCVQu2COMFlA26GSHBzWVhVe2eNdVPXZNdMf3ZujdCWA6j0NOUQfbq83JCy/cwT73NfPq9SkSe8lIQ==@kvack.org X-Gm-Message-State: AOJu0Yy1bhKwvPTZ6vEftjOfFGPH2iIiwS68VhHt4bHDeKDFLgY+VE2C cmpz+4i8Od56/NVtvxVFgZbnBi6BQAwwfBVx4ZkBWapP+YFUM0/dbjbg0HWm+QuBe/BoZA/5YjL K1zcRu9/BXrFwJ9gusSgAV8ydH8E= X-Gm-Gg: ASbGncs+FfKJoJzEB3t643iBqdtO2kK4hC6MgmPg4FE+DQwlHFjnLJ9R7Uk4oorqdlL secPF81jDAEH0At93tzdIqb8j+3KY/Hs0i93PUA== X-Google-Smtp-Source: AGHT+IE4JpIEKfJNH3pXnP+ZnARBHTULfSNB6E1995L0VRqbBETfN7RtqZem1NeHDWTS4AQo+YDv2Y7et78j924kwFQ= X-Received: by 2002:a2e:b893:0:b0:300:3a15:8f22 with SMTP id 38308e7fff4ca-3044db138b8mr24653961fa.21.1734611422264; Thu, 19 Dec 2024 04:30:22 -0800 (PST) MIME-Version: 1.0 References: <20241219121828.2120780-1-gal@nvidia.com> In-Reply-To: <20241219121828.2120780-1-gal@nvidia.com> From: Uros Bizjak Date: Thu, 19 Dec 2024 13:30:10 +0100 Message-ID: Subject: Re: [PATCH] percpu: Remove intermediate variable in PERCPU_PTR() To: Gal Pressman Cc: Dennis Zhou , Tejun Heo , Christoph Lameter , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, netdev@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 6E80A100011 X-Rspamd-Server: rspam12 X-Stat-Signature: 6g7apyo1isd8a1fxpictnx95n1ez8amu X-Rspam-User: X-HE-Tag: 1734611361-701170 X-HE-Meta: U2FsdGVkX18+159hf0pz/n9UN/ZJNiVoRumzRWRGcn81lHsNtYgj3CL2f3LVIsIONKOcySzft2DLNSXoZgdzJImSEEmbf4tQBTVVoH4VSUmwuVzMC1LMWfJy0UBh6OJqA0FcO9I42OV0AnWD2nJhrUK5b1IMbxqk4WtLzNyO289if3SahpZBElz1XYykY8wMc2BMQmrC/Lxla4+OfG6tZHtEFnMNs2a6KOm+mSaXqylV1x4IMIwusGuiWq43ipf49nxcea8ba2as248w8DcUvCvIYT1YB7jPJl+0i3mIRDbbbS8jQ73gXlHv/C8u8v5fSxEibf52/CgJoq3Np1lDVJUE2NQVuQZrqwM88NudjoBTsgeLqwtgXR/iohkzeHa16Ztu7TZY1jfhO7sn/GseQT7P2h8jSR4EtgXA2pf0P9LZ+QuuwWpWltz85JGhMgrGf6a2sRmV88AETjN4Y2FSfDYkyw+Nx7EpzsbXQ9LxWqmqtnhtvl/aIjNhCM7CNJvpTOKGP1a0P+j/tBMBEFIROpTNPWoglbLgsDUNMhoBDarYfWpLqvsFl4XW4l8m+Llkc8LMd5Y79hiZh6KiTesX+Rj7yP7knVeP70DAMeCtB7H80uFxlfsHqF5+pZsuxNid1bVLWYwLBguOrqppo9CDPJ0SFsawMltoVRCN2XkqMBEGf6M4hkii1WoQLONCbrQ39QorDqY0XCt9l/eIQWJDSlbmsPO7ZZxlJYuvrvRBTEyo911Kt9CvxBZ58nRXkO5wW0SAGaHMfmveutj2fzofTNyqp8CSfG84JANRNO4SC0xzWU4oqpFDAp43KEoBCZYoaRhywap6pZjTtd0pbKqry6KVjFWO/31ChXqRvq+ik2PetXv/MJzlvLkOsuE4GHxy7OshzfBWc4dKxogfg2baNyd3t+c5Mji/RGmYHxEEq3Iabxy8+tF59qRL+mP/jAYEmoyfEEAaTEV68JbdZrA dgkykFA8 578HL86quJuidKwG0sToPbkL13/f81O8Q2J27XgBV9FqWfTgaXN7t5Ie4aIVO1izaQ5+PJ0chpT3viGThVFKCcNbK9vagwjQFFBa/GaN3aGptPZuNM7TXe7xRLZL4uaPIp9aB2oDFyHCLDXPsfaafAcC7lxTsIkbxfyfswqISMC0/5DRsuwwMzFv3qOtTM5mBtnfsnoFaP86tIhLvR+WiTHrCaCYHoy/1bXZo3lSfhggxa6cM0G7Nm5oXNtcMERTRdGBDNK8etyc0CwP8j081g7FA1wPTI5bDL+AgqgFGixjqh92w/JnyI1WJhh2qHk/TTJUaAaoLysVq6ibOkrH8DmOJTwUkRLl5n/hIr6e/d/MD+nepDvfl4lrQC7zr0ig/4Zf7+yk6Jg1LcgpaVctH+WzTvsxId6aKGujc7tEtZmbG4q/+PveUyBO1sCd/lGJNp2WAA7QY6Um0Rq21ObkwZd7lPvuCXVynuX4MXqf5pAz+hbsqIGcV5g3XPw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000038, 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 Thu, Dec 19, 2024 at 1:18=E2=80=AFPM Gal Pressman wrote= : > > The intermediate variable in the PERCPU_PTR() macro results in a kernel > panic on boot [1] due to a compiler bug seen when compiling the kernel > (+ KASAN) with gcc 11.3.1, but not when compiling with latest gcc > (v14.2)/clang(v18.1). > > To solve it, remove the intermediate variable (which is not needed) and > keep the casting that resolves the address space checks. > > [1] > Oops: general protection fault, probably for non-canonical address 0xdf= fffc0000000003: 0000 [#1] SMP KASAN > KASAN: null-ptr-deref in range [0x0000000000000018-0x000000000000001f] > CPU: 0 UID: 0 PID: 547 Comm: iptables Not tainted 6.13.0-rc1_external_t= ested-master #1 > Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-g= f21b5a4aeb02-prebuilt.qemu.org 04/01/2014 > RIP: 0010:nf_ct_netns_do_get+0x139/0x540 > Code: 03 00 00 48 81 c4 88 00 00 00 5b 5d 41 5c 41 5d 41 5e 41 5f c3 4d= 8d 75 08 48 b8 00 00 00 00 00 fc ff df 4c 89 f2 48 c1 ea 03 <0f> b6 04 02 = 84 c0 74 08 3c 03 0f 8e 27 03 00 00 41 8b 45 08 83 c0 > RSP: 0018:ffff888116df75e8 EFLAGS: 00010207 > RAX: dffffc0000000000 RBX: 1ffff11022dbeebe RCX: ffffffff839a2382 > RDX: 0000000000000003 RSI: 0000000000000008 RDI: ffff88842ec46d10 > RBP: 0000000000000002 R08: 0000000000000000 R09: fffffbfff0b0860c > R10: ffff888116df75e8 R11: 0000000000000001 R12: ffffffff879d6a80 > R13: 0000000000000016 R14: 000000000000001e R15: ffff888116df7908 > FS: 00007fba01646740(0000) GS:ffff88842ec00000(0000) knlGS:00000000000= 00000 > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > CR2: 000055bd901800d8 CR3: 00000001205f0003 CR4: 0000000000172eb0 > Call Trace: > > ? die_addr+0x3d/0xa0 > ? exc_general_protection+0x144/0x220 > ? asm_exc_general_protection+0x22/0x30 > ? __mutex_lock+0x2c2/0x1d70 > ? nf_ct_netns_do_get+0x139/0x540 > ? nf_ct_netns_do_get+0xb5/0x540 > ? net_generic+0x1f0/0x1f0 > ? __create_object+0x5e/0x80 > xt_check_target+0x1f0/0x930 > ? textify_hooks.constprop.0+0x110/0x110 > ? pcpu_alloc_noprof+0x7cd/0xcf0 > ? xt_find_target+0x148/0x1e0 > find_check_entry.constprop.0+0x6c0/0x920 > ? get_info+0x380/0x380 > ? __virt_addr_valid+0x1df/0x3b0 > ? kasan_quarantine_put+0xe3/0x200 > ? kfree+0x13e/0x3d0 > ? translate_table+0xaf5/0x1750 > translate_table+0xbd8/0x1750 > ? ipt_unregister_table_exit+0x30/0x30 > ? __might_fault+0xbb/0x170 > do_ipt_set_ctl+0x408/0x1340 > ? nf_sockopt_find.constprop.0+0x17b/0x1f0 > ? lock_downgrade+0x680/0x680 > ? lockdep_hardirqs_on_prepare+0x284/0x400 > ? ipt_register_table+0x440/0x440 > ? bit_wait_timeout+0x160/0x160 > nf_setsockopt+0x6f/0xd0 > raw_setsockopt+0x7e/0x200 > ? raw_bind+0x590/0x590 > ? do_user_addr_fault+0x812/0xd20 > do_sock_setsockopt+0x1e2/0x3f0 > ? move_addr_to_user+0x90/0x90 > ? lock_downgrade+0x680/0x680 > __sys_setsockopt+0x9e/0x100 > __x64_sys_setsockopt+0xb9/0x150 > ? do_syscall_64+0x33/0x140 > do_syscall_64+0x6d/0x140 > entry_SYSCALL_64_after_hwframe+0x4b/0x53 > RIP: 0033:0x7fba015134ce > Code: 0f 1f 40 00 48 8b 15 59 69 0e 00 f7 d8 64 89 02 48 c7 c0 ff ff ff= ff eb b1 0f 1f 00 f3 0f 1e fa 49 89 ca b8 36 00 00 00 0f 05 <48> 3d 00 f0 = ff ff 77 0a c3 66 0f 1f 84 00 00 00 00 00 48 8b 15 21 > RSP: 002b:00007ffd9de6f388 EFLAGS: 00000246 ORIG_RAX: 0000000000000036 > RAX: ffffffffffffffda RBX: 000055bd9017f490 RCX: 00007fba015134ce > RDX: 0000000000000040 RSI: 0000000000000000 RDI: 0000000000000004 > RBP: 0000000000000500 R08: 0000000000000560 R09: 0000000000000052 > R10: 000055bd901800e0 R11: 0000000000000246 R12: 000055bd90180140 > R13: 000055bd901800e0 R14: 000055bd9017f498 R15: 000055bd9017ff10 > > Modules linked in: xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addr= type iptable_nat nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcgss oid_regist= ry overlay zram zsmalloc mlx4_ib mlx4_en mlx4_core rpcrdma rdma_ucm ib_uver= bs ib_iser libiscsi scsi_transport_iscsi fuse ib_umad rdma_cm ib_ipoib iw_c= m ib_cm ib_core > ---[ end trace 0000000000000000 ]--- > > Fixes: dabddd687c9e ("percpu: cast percpu pointer in PERCPU_PTR() via uns= igned long") > Closes: https://lore.kernel.org/all/7590f546-4021-4602-9252-0d525de35b52@= nvidia.com > Cc: Uros Bizjak > Signed-off-by: Gal Pressman Reviewed-by: Uros Bizjak > --- > include/linux/percpu-defs.h | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h > index 35842d1e3879..573adb643d90 100644 > --- a/include/linux/percpu-defs.h > +++ b/include/linux/percpu-defs.h > @@ -222,8 +222,7 @@ do { = \ > > #define PERCPU_PTR(__p) = \ > ({ \ > - unsigned long __pcpu_ptr =3D (__force unsigned long)(__p); = \ > - (typeof(*(__p)) __force __kernel *)(__pcpu_ptr); \ > + (typeof(*(__p)) __force __kernel *)((__force unsigned long)(__p))= ; \ > }) > > #ifdef CONFIG_SMP > -- > 2.40.1 >