[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] x86/cmpxchg: Add safety for bad sizes


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Nicola Vetrini <nicola.vetrini@xxxxxxxxxxx>
  • Date: Tue, 27 Jan 2026 17:46:37 +0100
  • Arc-authentication-results: i=1; bugseng.com; arc=none smtp.remote-ip=162.55.131.47
  • Arc-message-signature: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; c=relaxed/relaxed; t=1769532397; h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References: Message-ID:X-Sender:Organization:Content-Type: Content-Transfer-Encoding; bh=/FvdYw5XUALzymw0RBAmIm90Athdi8EyO3LpUk4DhmQ=; b=eVXX/9I95rDhfWI8Qx9NkbjzgSdb/VKfEym8IYSZG1VCDPqsRYsWN5xoTNFDN4zWfwa2 X5/HCjog9cA9ryuyGRASqLSmHUYmiJgpEv38SK98Q8sfnoJL3OHTHgzzjblGiNwuBJukm WWjrBBvMOSYsgZQod/cKcf4Cfp+bpafupjR/aectPP2lG4DtNjIxFEVZquzlIU5k/ekW3 XXINS9KHjM1DyXQZWlFNva+6FBmmBzhk6No8dV/EsHeswTl2/cSBzMjkGaS3BfFn/PevY 2eYT0PliHDq9GfMMzTZzzJ58ykUPFIYIFE1HFfb/UjCLtavJdEA1vgqVPU8VDzocYGkEc JGF7KBB38ONdPWa+VBe85ylRyFijdUnruEvS6VYvrxU1B4UqGncfkGcJeDDzTt4+Cslnc KhkuHDj72UjEkEWH/qmtGSwEzHSTKZzS9CY8+KlP8MyZfI92/kJ3FejSEACgrItzDdvCW ZMGIZZoA5sK/Z8yYLP+VgxcqIFCDwirhGYom2szp1sgsDq3gBs+UB7fF0bIGrfDdIrl6n QJKIR7afr+87/5wzcYMBXuu2ZieXh2Y9Fz6zKu5kJ1qJ1jHlNMEajYvFvMOUm3SJF0YWo Du9rBOXJWSRNBWAICF/e7h1qDtdx0JL9dmfOm7aKQAL9cS7vlFTXPsScaWAYq+o=
  • Arc-seal: i=1; d=bugseng.com; s=openarc; a=rsa-sha256; cv=none; t=1769532397; b=GZxDFUhNuh6/Tiff1Y8x+imUO6/fypfGEDJPkCLTHjKW/phEzP8slCjd/F1o1wyQ76KQ 2xJgPNd7Bsk7d6JNvgBNetKnfZSDirtLvSDhUJ2TSNWqL3p2TRsHFXsRlhwgdIRC9cq/L iUPVN/JJrEY4LVtEb49vmBHxCU5loDr5AfzCNXTEeevBxLudJJM8/Qxhmygfjc8Hc3mSz D6S1sVLDA6HdvnlIkRU41rBp0we81eAvVfM5XgtfGCYvfHJtzbmPaJywUdSuvkXOapJqc dWKRCVpIxLXaSrbuzm4NIOg6MgJfqWZsCxkC3LTFQU4ZI7z2Pa+yImfr69JiamXSG9hxK OFIa+fJuLUdqEwbERLv1qF8Dq7bMzSH3b34cCfue3pG8aeme4qP+XwESIPBEDIOqKdX5Y wxzqGYsdAPcRhCYx3zmbqRjWxDTCUxQjVi5fWJR8nL3UdYUC3jrj7mekYM2khueBbYpx0 xWT2/BP1qhCRGKFxYy8tPS8NIpcOwTzkTMAbjSDyEdfGKzNDRtL+VbVmNGza8+ueSkYJg /67MbSq4h8pvvCYjJLe/bWsgRuuXGjPCRxP3y97NchsZocOQ9YUKxu3/BdXo7KXZur/B6 xAfVx2wudMVUFmxnptMwsFd5HE6dM9RAAIAECNkj5w52u5HlJOZBuJG7Vd7BF6I=
  • Authentication-results: bugseng.com; arc=none smtp.remote-ip=162.55.131.47
  • Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 27 Jan 2026 16:46:55 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 2026-01-27 16:53, Jan Beulich wrote:
On 27.01.2026 11:23, Andrew Cooper wrote:
@@ -66,6 +68,8 @@ static always_inline unsigned long __xchg(
: [x] "+r" (x), [ptr] "+m" (*(volatile uint64_t *)ptr)
                        :: "memory" );
         break;
+    default:
+        __bad_xchg_size();

What has come of the plans to emit an assembly error directive in such
situations?

Also for Misra's sake "break" will be wanted.

Or mark the function noreturn for instance


@@ -106,6 +110,8 @@ static always_inline unsigned long __cmpxchg(
                        : [new] "r" (new), "a" (old)
                        : "memory" );
         return prev;
+    default:
+        BUG();
     }
     return old;
 }
@@ -137,6 +143,8 @@ static always_inline unsigned long cmpxchg_local_(
                        : "=a" (prev), [ptr] "+m" (*(uint64_t *)ptr)
                        : [new] "r" (new), "a" (old) );
         break;
+    default:
+        BUG();
     }

     return prev;

Hmm. If for some reason hvmemul_cmpxchg() ended up hitting either of these,
we'd immediately have an XSA. Imo these want to be ASSERT_UNREACHABLE()
with plausible recovery for release builds.

Jan

--
Nicola Vetrini, B.Sc.
Software Engineer
BUGSENG (https://bugseng.com)
LinkedIn: https://www.linkedin.com/in/nicola-vetrini-a42471253



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.