]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
riscv: uaccess: fix __put_user_nocheck for unaligned accesses
authorAurelien Jarno <aurelien@aurel32.net>
Thu, 24 Jul 2025 22:08:52 +0000 (00:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Sep 2025 17:02:40 +0000 (19:02 +0200)
commitf4bf4771c33d7a489cbec9e49463fe56b65f08c7
treedd32c934ab8ad58f7239c464f32c1827852b5da5
parentb884f96b99e9c61d94263bf7cd1cbd37db284a49
riscv: uaccess: fix __put_user_nocheck for unaligned accesses

commit 1046791390af6703a5e24718a16f37974adb11db upstream.

The type of the value to write should be determined by the size of the
destination, not by the value itself, which may be a constant. This
aligns the behavior with x86_64, where __typeof__(*(__gu_ptr)) is used
to infer the correct type.

This fixes an issue in put_cmsg, which was only writing 4 out of 8
bytes to the cmsg_len field, causing the glibc tst-socket-timestamp test
to fail.

Fixes: ca1a66cdd685 ("riscv: uaccess: do not do misaligned accesses in get/put_user()")
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20250724220853.1969954-1-aurelien@aurel32.net
Signed-off-by: Paul Walmsley <pjw@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/riscv/include/asm/uaccess.h