From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87B9C347C5 for ; Thu, 16 Jul 2026 16:53:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784220815; cv=none; b=DGm5jsnzO3K+fHi6C5k2YoeaU9qZwvworaJnGRGyB1zFW7qsPiHf3KwcAOk3Cvcjuc413Svf1kz2zOn5czcCDL+PqcyW1P0YmCuCLRMJP0t+0/Qcu9gavMyaxIpC2CG+GYCCK/l7GzGt5Ts+io8ndw4vSTtzhtLgMxRlv1a2skA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784220815; c=relaxed/simple; bh=yVWxVr5wCqho7aaBxohfMNyIFAx0zoDuyCrt4dd+8E8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=JPtAzpECN//4pf0IBNF/sTp9n0zQnXZh9IFox4lqU83ZWOm1T7EpBduYFEJXEzWdNm3Fl1kJFU6K5SVvWwnI99hbMwAs1MJGCIDAZ472VORTEsGmYxHBrqv9PRign4ekt1s1F3PIYUhzuL6pTBGWjsnsBvCmSHhUoDYQDpP6ghU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dxZZnljx; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dxZZnljx" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-493e4ccccc2so43093445e9.2 for ; Thu, 16 Jul 2026 09:53:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784220812; x=1784825612; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=qsv/ssphIw4w3J4xbQsRhu6PDnBdNECQZb2Ca+aq2GU=; b=dxZZnljx1OW8qCGMCT8jwmPZsYDZJ0NlZpm8UcyR8iWkWvyVS2c9nV5Px3/7rx4p0R 7l7lyn0hVPfqPAt7OzC1dOUQWmf33uTm4hV5xw1lnNMxZ90bOXFbqCQxINNuL6UFYvLc 7SSNgWbN750Bw8JabDvFFWSXL4emVy7KEsD4/KHXcUeiW+WLxv3L+vyra+jufdndKgdF cJQINitNhY+Tzpi1VVeKrOeG3ypjrziGuef4o7Pu87oXptzbLs60kOyYlRkDrX+3sZgI frTM353wDO21haQimfX9I84N+rz6p32vumaoU9Vq04JNI/iql71K16BNGElJeqXNzTan AVDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784220812; x=1784825612; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=qsv/ssphIw4w3J4xbQsRhu6PDnBdNECQZb2Ca+aq2GU=; b=i1wZhlbPSIS8FSbcO+eLKDeX4YG3so1HG1ysnoAAEHk6BkBMmUhkjfFBKVQke1bjFH 2KixbB3Y0f1N7ilw4+iZd8uf7lZ7aNkabXB6FCYofrysUScUTrq0i3h2cEVqKxIkBoP2 pbQos2VMEFKzDf7UKT9LbTmyKC/OhmC6HWhxlwklOQZ6ndf+m7dOw3dZt8W2AGScksIh DkvMGy532BnIjfYwsmLRnLzp+vu0IU8VPv0YQGCf7dH0O7Iv1lOGdQqU/agVSD903OJj KdujXzMMLd/iytWrTjrMuzokjDHpbwzXtDk3Qi8Pdu9eqZlMlxeRhN43hIxQaU0xfQgP TPxQ== X-Forwarded-Encrypted: i=1; AHgh+RrXlQJd972j8C/jBRdxfqDtV31yoPv5X1Ugg1L+XrRPuYCIwhbAbbTXrQ0YcqUAUZDnygDnDeGOE0Q1GsM=@vger.kernel.org X-Gm-Message-State: AOJu0YyS2gK8jTNph3NSGUm+1DXbFTStC6/8RpQDl9I0ZwKFbhghExb2 8frS0qC9phIWJa33qvZzH9ikn0ZS34Jwb6Cx5eDQuFKMlhXOUhVY5TQ= X-Gm-Gg: AfdE7clAspVDNXQx50EyPwv15uhdBDBY4BdhB+ImYhez3GB+8dqZWQz1EmYqFHmUHfo x1yhku6PjksheAnW0CH/TNnj3rTbV1QaDnJSCbTbaN/xP3yHem9lOf6tHPjCe6em7PjdX5RF0GU Xo3ViTHgKjdHCcDn+u3bCi0RZSD8eKwZe6ZQRIvUi5sWvZkRKLSGghdIJgakS2h/p5bYyTWFMJr DvGF0sSHNERKjDYsK8Ge3t2xTbF8eF0zQgVY3+fIwfh58liY6354qw2Rpy9aH8VNOw+AoWciG5G T45HC67ekM+oRQz0qLfadBj+ObjgsrJmdrzBxXh9Sth/iguIDPOEdeuYgfX704rk9hL5/Q+Yrx1 WjUeoHwvc1Kx2E9fd2FvmUGsRPz+WhS90GdUeSDFL4ZrqxwbqqowUE4k0YI3M5USHr70j1WwO7K LoWLrqiGZkKGxRkwXtcmAqQf81be93NaQ/9oGf1sx7G3o3pK6SZDn956Bpbpw= X-Received: by 2002:a05:600c:4fcc:b0:493:bcba:46a4 with SMTP id 5b1f17b1804b1-49547523de0mr12594045e9.20.1784220811600; Thu, 16 Jul 2026 09:53:31 -0700 (PDT) Received: from localhost ([2a02:810d:4a94:b300:257e:feb0:16dc:a8e5]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-49541eb7372sm96044945e9.13.2026.07.16.09.53.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 16 Jul 2026 09:53:31 -0700 (PDT) From: Florian Fuchs To: Rich Felker , John Paul Adrian Glaubitz , linux-sh@vger.kernel.org Cc: Florian Fuchs , linux-kernel@vger.kernel.org Subject: [PATCH] sh: uaccess: Require offsettable operands for 64-bit user access Date: Thu, 16 Jul 2026 18:53:29 +0200 Message-ID: <20260716165329.3418962-1-fuchsfl@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The 64-bit __get_user_u64()/__put_user_u64() paths address the memory operand as %T2 (base+4). This base+4 requires an offsettable address, but "m" also allows the indexed mode @(R0,Rn) (e.g. for a variable- indexed array element), which has no displacement field for the +4. Depending on optimization this build fails with "invalid 'asm'" or an ICE in GCC's change_address_1. Require an offsettable memory operand, allowing GCC to reload an unsuitable indexed address into an appropriate form. Fixes: 2d2b308a8b7d ("sh: Implement __get_user_u64() required for 64-bit get_user()") Signed-off-by: Florian Fuchs --- The patch was verified on the J2 core on the Mimas v2 board. And booted on the Dreamcast SH4. checkpatch doesn't like the missing whitespaces around : I preferred not to touch the other unrelated lines, so I kept the local style. The original GCC ICE, without this patch can be seen here: https://lore.kernel.org/linux-sh/ef22a5de-d945-4080-9f4a-f5a1ab9de1dc@landley.net/ arch/sh/include/asm/uaccess_32.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/sh/include/asm/uaccess_32.h b/arch/sh/include/asm/uaccess_32.h index 5d7ddc092afd..cef40414bfb1 100644 --- a/arch/sh/include/asm/uaccess_32.h +++ b/arch/sh/include/asm/uaccess_32.h @@ -92,7 +92,7 @@ __asm__ __volatile__( \ ".long 1b + 2, 3b\n\t" \ ".previous" \ :"=&r" (err), "=&r" (x) \ - :"m" (__m(addr)), "i" (-EFAULT), "0" (err)); }) + :"o" (__m(addr)), "i" (-EFAULT), "0" (err)); }) #else #define __get_user_u64(x, addr, err) \ ({ \ @@ -116,7 +116,7 @@ __asm__ __volatile__( \ ".long 1b + 2, 3b\n\t" \ ".previous" \ :"=&r" (err), "=&r" (x) \ - :"m" (__m(addr)), "i" (-EFAULT), "0" (err)); }) + :"o" (__m(addr)), "i" (-EFAULT), "0" (err)); }) #endif #define __put_user_size(x,ptr,size,retval) \ @@ -196,7 +196,7 @@ __asm__ __volatile__( \ ".long 1b, 3b\n\t" \ ".previous" \ : "=r" (retval) \ - : "r" (val), "m" (__m(addr)), "i" (-EFAULT), "0" (retval) \ + : "r" (val), "o" (__m(addr)), "i" (-EFAULT), "0" (retval) \ : "memory"); }) #else #define __put_user_u64(val,addr,retval) \ @@ -218,7 +218,7 @@ __asm__ __volatile__( \ ".long 1b, 3b\n\t" \ ".previous" \ : "=r" (retval) \ - : "r" (val), "m" (__m(addr)), "i" (-EFAULT), "0" (retval) \ + : "r" (val), "o" (__m(addr)), "i" (-EFAULT), "0" (retval) \ : "memory"); }) #endif -- 2.43.0