Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2218946/?format=api
{ "id": 2218946, "url": "http://patchwork.ozlabs.org/api/patches/2218946/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-arc/patch/20260402-cmpxchg-v1-1-4561e2c05d2c@gmail.com/", "project": { "id": 48, "url": "http://patchwork.ozlabs.org/api/projects/48/?format=api", "name": "Linux ARC development", "link_name": "linux-arc", "list_id": "linux-snps-arc.lists.infradead.org", "list_email": "linux-snps-arc@lists.infradead.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260402-cmpxchg-v1-1-4561e2c05d2c@gmail.com>", "list_archive_url": null, "date": "2026-04-02T06:56:01", "name": "cmpxchg: allow const-qualified old value in cmpxchg()", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "b31881f285990c28536ad72719ef4c83f14b3e16", "submitter": { "id": 15639, "url": "http://patchwork.ozlabs.org/api/people/15639/?format=api", "name": "Hangbin Liu", "email": "liuhangbin@gmail.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-arc/patch/20260402-cmpxchg-v1-1-4561e2c05d2c@gmail.com/mbox/", "series": [ { "id": 498437, "url": "http://patchwork.ozlabs.org/api/series/498437/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-arc/list/?series=498437", "date": "2026-04-02T06:56:01", "name": "cmpxchg: allow const-qualified old value in cmpxchg()", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498437/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2218946/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2218946/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=vuz6cugs;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=dhZr9nA7;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fmXhk5JnBz1yCs\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 02 Apr 2026 17:56:49 +1100 (AEDT)", "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w8Byt-0000000GxNK-0Wy8;\n\tThu, 02 Apr 2026 06:56:43 +0000", "from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1w8Byq-0000000GxKG-3Cdz\n\tfor linux-snps-arc@lists.infradead.org;\n\tThu, 02 Apr 2026 06:56:42 +0000", "by mail-pl1-x62c.google.com with SMTP id\n d9443c01a7336-2b23f90f53aso4929455ad.0\n for <linux-snps-arc@lists.infradead.org>;\n Wed, 01 Apr 2026 23:56:40 -0700 (PDT)", "from 1.0.0.127.in-addr.arpa\n ([240e:34c:5765:500:7999:76d9:8e52:f837])\n by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2b2749a1e9csm19647945ad.55.2026.04.01.23.56.08\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 01 Apr 2026 23:56:38 -0700 (PDT)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:Cc:To:Message-Id:MIME-Version:Subject:\n\tDate:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:\n\tResent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:\n\tList-Owner; bh=1t2Cct7o05uikfl8AZWJBP+wDnS2XogX0C2WboYEYyA=; b=vuz6cugsOoQEbo\n\tptnQlX3sDwsODBje+JTptxnUAI654oM53SCraox0iKB2jMKVEJ54bW01heZ/8S0V9HJum4GeD8CtY\n\tCJaooCysCdZGFmsV1s64P+TJehN9Gw7Vv4teDgg76w5bi0IceNy82U8F7l2cHjrJb/BRQMRLSUCAv\n\tSc3VNCgyw/0+G0u9hreGkj+VikDXVm2cydeHFgGpfHHLj8PMqq0OTlQoc6UzSQcxBsRvlpX8hldYQ\n\t+5FtZpLFcsi/+vTA2S4P+TDfuepDpZ05caSEPBBVwU2tFdnJlPaSQ3qXine7afUVC4bBhmnIBLFHp\n\t3vCtkatCAFWa3oPAiuqw==;", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775112999; x=1775717799;\n darn=lists.infradead.org;\n h=cc:to:message-id:content-transfer-encoding:mime-version:subject\n :date:from:from:to:cc:subject:date:message-id:reply-to;\n bh=FlpdYf1WLDHAMV/rn1y6xYHlGkLnTRJ4f+O5zsHNUww=;\n b=dhZr9nA76k0PgCKC43mhvkZqs0g192+mmQQugqJyX6+TT8X1Y0yG7uKwPtw8v+FmB1\n kUBPasxycNc7CC5e+1pOB18XfsNE+LOXDx+eualb+Iixc5ekyhbvy+61niLnnvN+GVK3\n SHhweJg4ev2CPLopNQVOHY/2/DOo/bKbvbGbCZIK+MnWRKxMMOidOhuSik2/y7R0GjSV\n zOOBfou8WZWiH5w5Px45A8DYoSaGMIrrShvpkkjqzih5no7n5CQTZnd6A4biBRXKDskP\n tUco8N+IoAosJIsyMQ1rEWZLZN5CGF3Y6VJ7aaGlKN7n077rQni4vcfpfyLai8D5IrbM\n TYmQ==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775112999; x=1775717799;\n h=cc:to:message-id:content-transfer-encoding:mime-version:subject\n :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=FlpdYf1WLDHAMV/rn1y6xYHlGkLnTRJ4f+O5zsHNUww=;\n b=CIS1HUOHVWRRDrUeCXRpFx/FkJzsJbkOWQL+HPWS5imkpVepilbChAT5GZOyloczik\n vAlPayrOxbmmps7VOxfUIiZovT0GtZscg+MOb6Vy2lhJ9iHxS+l3U7ClvXpPkUZK6kab\n uN3WGZzHAy3zAsvHE4U9OrYf1FCCVe2Yt4I/3V6iu4o1ogntRMk9L+f2ftse8WEMQXMI\n iotvUkPIz212Ikvmt/n3XDNZaSjdEnlUE8WGyHI0NRtDmHZmh5F+AH1Nx5usxz8iVZ5Q\n mBqkn+CF3bFJCq8r/bwKI1/B3S3QxZopxcZCqHbM3VVdDqqckq0aqHE+qKT/Jrt0jJYF\n MiWg==", "X-Forwarded-Encrypted": "i=1;\n AJvYcCU9Xpk7o5pB8ppBXBqvyxoxotPFClC5Kdcad0Ev+2f7TUv744H+DZQfSV3lJfuBobNQNd+71928HhE9JNN/FQ==@lists.infradead.org", "X-Gm-Message-State": "AOJu0YzCKakIcIEqgo/33uzkiPkcZrsA5QPI0HoPfFJNb1tMn+fWwPN7\n\tc1lm9TgeZQMkz3ltFeK40cSbVZk40RDpRUln9TTaluLlorxdzmgA8wfe", "X-Gm-Gg": "AeBDietjKPeN5NlPrx/8DvpLOrJATOdzBJEL1IUvfs17/Q0vEdoOYmQ+85emY1LTowq\n\tTSNVNnVhN558TQprKg6U8oeKafcO40txI7b943ehvlszBKmA4X11IKyit33/Ld8x+SgF010tDeo\n\txr+8HvOIMB8GsaGc1P8wOISluJB19QVhCPzsuOFxBRt5TKjHv+we7/2SsUZsH7o0VvnI4lp6X9C\n\tgoKS9zi26T8mU7m3bsAzeUtEmUuVCOh3xRe0JSfml2CsQSwsNJd4XzEwtrZ3c2k+EKp0wt9P2mZ\n\tNP/pev6nwvjkbb4+122mFg80DYsD5H5wyTIo0lFb5a6QtWKGfo7MxEUDvTvclcBzpZUtz9mXmKZ\n\tjk8kZWLwaa30Lxj7gsRY3XqeOtvdY45xu8DN0hryaGgCv6FPxVnc6urAKvcCclGz8KjrA0ZQV79\n\t+OTmsV+8jtdnttbvZ8xM74Pqjp+d+29Md3iIbRqeU6wMYWhFUFQaMzGH7PmwOq9gjQkD4=", "X-Received": "by 2002:a17:903:90b:b0:2b2:470d:6d18 with SMTP id\n d9443c01a7336-2b269adfea5mr73898055ad.8.1775112999356;\n Wed, 01 Apr 2026 23:56:39 -0700 (PDT)", "From": "Hangbin Liu <liuhangbin@gmail.com>", "Date": "Thu, 02 Apr 2026 14:56:01 +0800", "Subject": "[PATCH] cmpxchg: allow const-qualified old value in cmpxchg()", "MIME-Version": "1.0", "Message-Id": "<20260402-cmpxchg-v1-1-4561e2c05d2c@gmail.com>", "X-B4-Tracking": "v=1; b=H4sIAAAAAAAC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE\n vPSU3UzU4B8JSMDIzMDEwMj3eTcgorkjHRdo7QUYwPzNBOTRBNDJaDqgqLUtMwKsEnRsbW1AGI\n cTBRZAAAA", "X-Change-ID": "20260402-cmpxchg-2fd307f44a41", "To": "Richard Henderson <richard.henderson@linaro.org>,\n Matt Turner <mattst88@gmail.com>, Magnus Lindholm <linmag7@gmail.com>,\n Vineet Gupta <vgupta@kernel.org>, Brian Cain <bcain@kernel.org>,\n \"James E.J. Bottomley\" <James.Bottomley@HansenPartnership.com>,\n Helge Deller <deller@gmx.de>, Madhavan Srinivasan <maddy@linux.ibm.com>,\n Michael Ellerman <mpe@ellerman.id.au>, Nicholas Piggin <npiggin@gmail.com>,\n \"Christophe Leroy (CS GROUP)\" <chleroy@kernel.org>,\n Paul Walmsley <pjw@kernel.org>, Palmer Dabbelt <palmer@dabbelt.com>,\n Albert Ou <aou@eecs.berkeley.edu>, Alexandre Ghiti <alex@ghiti.fr>,\n Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>,\n John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>,\n \"David S. Miller\" <davem@davemloft.net>,\n Andreas Larsson <andreas@gaisler.com>, Thomas Gleixner <tglx@kernel.org>,\n Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,\n Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org,\n \"H. Peter Anvin\" <hpa@zytor.com>, Chris Zankel <chris@zankel.net>,\n Max Filippov <jcmvbkbc@gmail.com>", "Cc": "linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org,\n linux-snps-arc@lists.infradead.org, linux-hexagon@vger.kernel.org,\n linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,\n linux-riscv@lists.infradead.org, linux-sh@vger.kernel.org,\n sparclinux@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,\n Hangbin Liu <liuhangbin@gmail.com>", "X-Mailer": "b4 0.14.3", "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ", "X-CRM114-CacheID": "sfid-20260401_235640_804032_0D240965 ", "X-CRM114-Status": "GOOD ( 16.24 )", "X-Spam-Score": "-2.1 (--)", "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam. The original\n message has been attached to this so you can view it or label\n similar future email. If you have any questions, see\n the administrator of that system for details.\n Content preview: The old value passed to cmpxchg() is semantically\n read-only:\n it is only loaded into a register as a comparand and is never written\n back.\n However, the macro currently assigns it implicitly to a local v [...]\n Content analysis details: (-2.1 points, 5.0 required)\n pts rule name description\n ---- ----------------------\n --------------------------------------------------\n -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no\n trust\n [2607:f8b0:4864:20:0:0:0:62c listed in]\n [list.dnswl.org]\n 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record\n -0.0 SPF_PASS SPF: sender matches SPF record\n 0.1 DKIM_SIGNED Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from\n envelope-from domain\n -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n author's\n domain\n -0.1 DKIM_VALID Message has at least one valid DKIM or DK\n signature\n -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%\n [score: 0.0000]\n 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n provider\n [liuhangbin(at)gmail.com]", "X-BeenThere": "linux-snps-arc@lists.infradead.org", "X-Mailman-Version": "2.1.34", "Precedence": "list", "List-Id": "Linux on Synopsys ARC Processors <linux-snps-arc.lists.infradead.org>", "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/linux-snps-arc>,\n <mailto:linux-snps-arc-request@lists.infradead.org?subject=unsubscribe>", "List-Archive": "<http://lists.infradead.org/pipermail/linux-snps-arc/>", "List-Post": "<mailto:linux-snps-arc@lists.infradead.org>", "List-Help": "<mailto:linux-snps-arc-request@lists.infradead.org?subject=help>", "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/linux-snps-arc>,\n <mailto:linux-snps-arc-request@lists.infradead.org?subject=subscribe>", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Sender": "\"linux-snps-arc\" <linux-snps-arc-bounces@lists.infradead.org>", "Errors-To": "\n linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org" }, "content": "The old value passed to cmpxchg() is semantically read-only: it is\nonly loaded into a register as a comparand and is never written back.\nHowever, the macro currently assigns it implicitly to a local variable\nof type __typeof__(*(ptr)), which triggers -Werror=discarded-qualifiers\nwhen old is a const-qualified pointer and ptr points to a non-const type.\n\nTo avoid this, let's add an explicit cast to __typeof__(*(ptr)) for the\nold local variable in the cmpxchg macros. This explicit cast suppresses\nthe -Wdiscarded-qualifiers diagnostic.\n\nThe new value is intentionally left without a cast: new will be stored\ninto *ptr, so silently accepting a const-qualified new would allow\ncallers to store a pointer-to-const into a non-const location without\nany compiler warning.\n\nSuggested-by: Jakub Kicinski <kuba@kernel.org>\nSigned-off-by: Hangbin Liu <liuhangbin@gmail.com>\n---\nThis is my first time posting a patch with multi-architecture specific\nchanges, so I'm not sure which target repository I should use. Please\ncorrect me if I made any mistakes.\n---\n arch/alpha/include/asm/cmpxchg.h | 4 ++--\n arch/arc/include/asm/cmpxchg.h | 4 ++--\n arch/hexagon/include/asm/cmpxchg.h | 2 +-\n arch/parisc/include/asm/cmpxchg.h | 2 +-\n arch/powerpc/include/asm/cmpxchg.h | 8 ++++----\n arch/riscv/include/asm/cmpxchg.h | 4 ++--\n arch/sh/include/asm/cmpxchg.h | 2 +-\n arch/sparc/include/asm/cmpxchg_32.h | 2 +-\n arch/sparc/include/asm/cmpxchg_64.h | 2 +-\n arch/x86/include/asm/cmpxchg.h | 2 +-\n arch/xtensa/include/asm/cmpxchg.h | 2 +-\n tools/arch/x86/include/asm/cmpxchg.h | 2 +-\n 12 files changed, 18 insertions(+), 18 deletions(-)\n\n\n---\nbase-commit: 48b3cd69265f346f64b93064723492da46206e9b\nchange-id: 20260402-cmpxchg-2fd307f44a41\n\nBest regards,", "diff": "diff --git a/arch/alpha/include/asm/cmpxchg.h b/arch/alpha/include/asm/cmpxchg.h\nindex ae1b96479d0c..b4b8dac759c4 100644\n--- a/arch/alpha/include/asm/cmpxchg.h\n+++ b/arch/alpha/include/asm/cmpxchg.h\n@@ -234,7 +234,7 @@ ____cmpxchg(volatile void *ptr, unsigned long old, unsigned long new,\n \n #define arch_cmpxchg_local(ptr, o, n)\t\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t\\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\\\n \t__typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t\\\n \t(__typeof__(*(ptr))) ____cmpxchg((ptr), (unsigned long)_o_,\t\\\n \t\t\t\t\t (unsigned long)_n_,\t\t\\\n@@ -265,7 +265,7 @@ ____cmpxchg(volatile void *ptr, unsigned long old, unsigned long new,\n #define arch_cmpxchg(ptr, o, n)\t\t\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n \t__typeof__(*(ptr)) __ret;\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t\\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\\\n \t__typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t\\\n \tsmp_mb();\t\t\t\t\t\t\t\\\n \t__ret = (__typeof__(*(ptr))) ____cmpxchg((ptr),\t\t\t\\\ndiff --git a/arch/arc/include/asm/cmpxchg.h b/arch/arc/include/asm/cmpxchg.h\nindex 76f43db0890f..9637e2cdb5b1 100644\n--- a/arch/arc/include/asm/cmpxchg.h\n+++ b/arch/arc/include/asm/cmpxchg.h\n@@ -42,7 +42,7 @@\n #define arch_cmpxchg_relaxed(ptr, old, new)\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n \t__typeof__(ptr) _p_ = (ptr);\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) _o_ = (old);\t\t\t\t\t\\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(old);\t\t\t\\\n \t__typeof__(*(ptr)) _n_ = (new);\t\t\t\t\t\\\n \t__typeof__(*(ptr)) _prev_;\t\t\t\t\t\\\n \t\t\t\t\t\t\t\t\t\\\n@@ -64,7 +64,7 @@\n #define arch_cmpxchg(ptr, old, new)\t\t\t\t \\\n ({\t\t\t\t\t\t\t\t\t\\\n \tvolatile __typeof__(ptr) _p_ = (ptr);\t\t\t\t\\\n-\t__typeof__(*(ptr)) _o_ = (old);\t\t\t\t\t\\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(old);\t\t\t\\\n \t__typeof__(*(ptr)) _n_ = (new);\t\t\t\t\t\\\n \t__typeof__(*(ptr)) _prev_;\t\t\t\t\t\\\n \tunsigned long __flags;\t\t\t\t\t\t\\\ndiff --git a/arch/hexagon/include/asm/cmpxchg.h b/arch/hexagon/include/asm/cmpxchg.h\nindex 9c58fb81f7fd..7e117964cb6b 100644\n--- a/arch/hexagon/include/asm/cmpxchg.h\n+++ b/arch/hexagon/include/asm/cmpxchg.h\n@@ -54,7 +54,7 @@ __arch_xchg(unsigned long x, volatile void *ptr, int size)\n #define arch_cmpxchg(ptr, old, new)\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\\\n \t__typeof__(ptr) __ptr = (ptr);\t\t\t\t\\\n-\t__typeof__(*(ptr)) __old = (old);\t\t\t\\\n+\t__typeof__(*(ptr)) __old = (__typeof__(*(ptr)))(old);\t\\\n \t__typeof__(*(ptr)) __new = (new);\t\t\t\\\n \t__typeof__(*(ptr)) __oldval = (__typeof__(*(ptr))) 0;\t\\\n \t\t\t\t\t\t\t\t\\\ndiff --git a/arch/parisc/include/asm/cmpxchg.h b/arch/parisc/include/asm/cmpxchg.h\nindex bf0a0f1189eb..2a87942227f8 100644\n--- a/arch/parisc/include/asm/cmpxchg.h\n+++ b/arch/parisc/include/asm/cmpxchg.h\n@@ -78,7 +78,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)\n \n #define arch_cmpxchg(ptr, o, n)\t\t\t\t\t\t \\\n ({\t\t\t\t\t\t\t\t\t \\\n-\t__typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t \\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t \\\n \t__typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t \\\n \t(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,\t \\\n \t\t\t\t (unsigned long)_n_, sizeof(*(ptr))); \\\ndiff --git a/arch/powerpc/include/asm/cmpxchg.h b/arch/powerpc/include/asm/cmpxchg.h\nindex dbb50c06f0bf..36d113b13623 100644\n--- a/arch/powerpc/include/asm/cmpxchg.h\n+++ b/arch/powerpc/include/asm/cmpxchg.h\n@@ -698,7 +698,7 @@ __cmpxchg_acquire(void *ptr, unsigned long old, unsigned long new,\n }\n #define arch_cmpxchg(ptr, o, n)\t\t\t\t\t\t \\\n ({\t\t\t\t\t\t\t\t\t \\\n- __typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t \\\n+ __typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\t \\\n __typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t \\\n (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,\t\t \\\n \t\t\t\t (unsigned long)_n_, sizeof(*(ptr))); \\\n@@ -707,7 +707,7 @@ __cmpxchg_acquire(void *ptr, unsigned long old, unsigned long new,\n \n #define arch_cmpxchg_local(ptr, o, n)\t\t\t\t\t \\\n ({\t\t\t\t\t\t\t\t\t \\\n- __typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t \\\n+ __typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\t \\\n __typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t \\\n (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_,\t \\\n \t\t\t\t (unsigned long)_n_, sizeof(*(ptr))); \\\n@@ -715,7 +715,7 @@ __cmpxchg_acquire(void *ptr, unsigned long old, unsigned long new,\n \n #define arch_cmpxchg_relaxed(ptr, o, n)\t\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t\\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\\\n \t__typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t\\\n \t(__typeof__(*(ptr))) __cmpxchg_relaxed((ptr),\t\t\t\\\n \t\t\t(unsigned long)_o_, (unsigned long)_n_,\t\t\\\n@@ -724,7 +724,7 @@ __cmpxchg_acquire(void *ptr, unsigned long old, unsigned long new,\n \n #define arch_cmpxchg_acquire(ptr, o, n)\t\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t\\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\\\n \t__typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t\\\n \t(__typeof__(*(ptr))) __cmpxchg_acquire((ptr),\t\t\t\\\n \t\t\t(unsigned long)_o_, (unsigned long)_n_,\t\t\\\ndiff --git a/arch/riscv/include/asm/cmpxchg.h b/arch/riscv/include/asm/cmpxchg.h\nindex 8712cf9c69dc..3026a9ff43c4 100644\n--- a/arch/riscv/include/asm/cmpxchg.h\n+++ b/arch/riscv/include/asm/cmpxchg.h\n@@ -215,7 +215,7 @@\n \t\t cas_prepend, cas_append)\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n \t__typeof__(ptr) __ptr = (ptr);\t\t\t\t\t\\\n-\t__typeof__(*(__ptr)) __old = (old);\t\t\t\t\\\n+\t__typeof__(*(__ptr)) __old = (__typeof__(*(__ptr)))(old);\t\\\n \t__typeof__(*(__ptr)) __new = (new);\t\t\t\t\\\n \t__typeof__(*(__ptr)) __ret;\t\t\t\t\t\\\n \t\t\t\t\t\t\t\t\t\\\n@@ -331,7 +331,7 @@ union __u128_halves {\n \n #define __arch_cmpxchg128(p, o, n, cas_sfx)\t\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\t\\\n-\t__typeof__(*(p)) __o = (o); \\\n+\t__typeof__(*(p)) __o = (__typeof__(*(p)))(o); \\\n \tunion __u128_halves __hn = { .full = (n) };\t\t\t\t\\\n \tunion __u128_halves __ho = { .full = (__o) };\t\t\t\t\\\n \tregister unsigned long t1 asm (\"t1\") = __hn.low;\t\t\t\\\ndiff --git a/arch/sh/include/asm/cmpxchg.h b/arch/sh/include/asm/cmpxchg.h\nindex 1e5dc5ccf7bf..7fb9214d246f 100644\n--- a/arch/sh/include/asm/cmpxchg.h\n+++ b/arch/sh/include/asm/cmpxchg.h\n@@ -68,7 +68,7 @@ static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old,\n \n #define arch_cmpxchg(ptr,o,n)\t\t\t\t\t\t \\\n ({\t\t\t\t\t\t\t\t\t \\\n- __typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t \\\n+ __typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\t \\\n __typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t \\\n (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,\t\t \\\n \t\t\t\t (unsigned long)_n_, sizeof(*(ptr))); \\\ndiff --git a/arch/sparc/include/asm/cmpxchg_32.h b/arch/sparc/include/asm/cmpxchg_32.h\nindex 8c1a3ca34eeb..f733bd5b5d3b 100644\n--- a/arch/sparc/include/asm/cmpxchg_32.h\n+++ b/arch/sparc/include/asm/cmpxchg_32.h\n@@ -55,7 +55,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size)\n \n #define arch_cmpxchg(ptr, o, n)\t\t\t\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t\\\n+\t__typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\\\n \t__typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t\\\n \t(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,\t\\\n \t\t\t(unsigned long)_n_, sizeof(*(ptr)));\t\t\\\ndiff --git a/arch/sparc/include/asm/cmpxchg_64.h b/arch/sparc/include/asm/cmpxchg_64.h\nindex 3de25262c411..4a9ccf80487a 100644\n--- a/arch/sparc/include/asm/cmpxchg_64.h\n+++ b/arch/sparc/include/asm/cmpxchg_64.h\n@@ -170,7 +170,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)\n \n #define arch_cmpxchg(ptr,o,n)\t\t\t\t\t\t \\\n ({\t\t\t\t\t\t\t\t\t \\\n- __typeof__(*(ptr)) _o_ = (o);\t\t\t\t\t \\\n+ __typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t\t \\\n __typeof__(*(ptr)) _n_ = (n);\t\t\t\t\t \\\n (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,\t\t \\\n \t\t\t\t (unsigned long)_n_, sizeof(*(ptr))); \\\ndiff --git a/arch/x86/include/asm/cmpxchg.h b/arch/x86/include/asm/cmpxchg.h\nindex a88b06f1c35e..a7984842c58a 100644\n--- a/arch/x86/include/asm/cmpxchg.h\n+++ b/arch/x86/include/asm/cmpxchg.h\n@@ -85,7 +85,7 @@ extern void __add_wrong_size(void)\n #define __raw_cmpxchg(ptr, old, new, size, lock)\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n \t__typeof__(*(ptr)) __ret;\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) __old = (old);\t\t\t\t\\\n+\t__typeof__(*(ptr)) __old = (__typeof__(*(ptr)))(old);\t\t\\\n \t__typeof__(*(ptr)) __new = (new);\t\t\t\t\\\n \tswitch (size) {\t\t\t\t\t\t\t\\\n \tcase __X86_CASE_B:\t\t\t\t\t\t\\\ndiff --git a/arch/xtensa/include/asm/cmpxchg.h b/arch/xtensa/include/asm/cmpxchg.h\nindex b6db4838b175..0f68eddb6d2d 100644\n--- a/arch/xtensa/include/asm/cmpxchg.h\n+++ b/arch/xtensa/include/asm/cmpxchg.h\n@@ -83,7 +83,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)\n }\n \n #define arch_cmpxchg(ptr,o,n)\t\t\t\t\t\t \\\n-\t({ __typeof__(*(ptr)) _o_ = (o);\t\t\t\t \\\n+\t({ __typeof__(*(ptr)) _o_ = (__typeof__(*(ptr)))(o);\t\t \\\n \t __typeof__(*(ptr)) _n_ = (n);\t\t\t\t \\\n \t (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_,\t \\\n \t \t\t\t (unsigned long)_n_, sizeof (*(ptr))); \\\ndiff --git a/tools/arch/x86/include/asm/cmpxchg.h b/tools/arch/x86/include/asm/cmpxchg.h\nindex 0ed9ca2766ad..b71938db9422 100644\n--- a/tools/arch/x86/include/asm/cmpxchg.h\n+++ b/tools/arch/x86/include/asm/cmpxchg.h\n@@ -35,7 +35,7 @@ extern void __cmpxchg_wrong_size(void)\n #define __raw_cmpxchg(ptr, old, new, size, lock)\t\t\t\\\n ({\t\t\t\t\t\t\t\t\t\\\n \t__typeof__(*(ptr)) __ret;\t\t\t\t\t\\\n-\t__typeof__(*(ptr)) __old = (old);\t\t\t\t\\\n+\t__typeof__(*(ptr)) __old = (__typeof__(*(ptr)))(old);\t\t\\\n \t__typeof__(*(ptr)) __new = (new);\t\t\t\t\\\n \tswitch (size) {\t\t\t\t\t\t\t\\\n \tcase __X86_CASE_B:\t\t\t\t\t\t\\\n", "prefixes": [] }