Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

scm: use masked_user_access_begin() in put_cmsg()

Use the greatest and latest uaccess construct to get an optimal code.

Before :

lea (%r9,%rcx,1),%r10
movabs $<USER_PTR_MAX>,%r11
mov $0xfffffff2,%eax
cmp %rcx,%r10
jb ffffffff81cdc312 <put_cmsg+0x152>
cmp %r11,%r10
ja ffffffff81cdc312 <put_cmsg+0x152>
stac
lfence
mov %r9,(%rcx)

After:

movabs $<USER_PTR_MAX>,%r9
cmp %r9,%rax
cmova %r9,%rax
stac
mov %rcx,(%rax)

Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20250925224914.3590290-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Eric Dumazet and committed by
Jakub Kicinski
2b235765 3806446f

+3 -1
+3 -1
net/core/scm.c
··· 273 273 274 274 check_object_size(data, cmlen - sizeof(*cm), true); 275 275 276 - if (!user_write_access_begin(cm, cmlen)) 276 + if (can_do_masked_user_access()) 277 + cm = masked_user_access_begin(cm); 278 + else if (!user_write_access_begin(cm, cmlen)) 277 279 goto efault; 278 280 279 281 unsafe_put_user(cmlen, &cm->cmsg_len, efault_end);