From: Christophe Leroy (CS GROUP) Date: Tue, 10 Mar 2026 11:33:36 +0000 (+0100) Subject: net: Convert move_addr_to_user() to scoped user access X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=17edc4e820bf8b4c7737c1de86c267e6974d543a;p=thirdparty%2Flinux.git net: Convert move_addr_to_user() to scoped user access move_addr_to_user() is a critical functions that was converted to masked user access by commit 1fb0e471611d ("net: remove one stac/clac pair from move_addr_to_user()") Convert it to scoped user access to simplify the code. Signed-off-by: Christophe Leroy (CS GROUP) Reviewed-by: Eric Dumazet Link: https://patch.msgid.link/36d7f2e7f504d620c1b88526b25ebc89e3cb61d9.1773142315.git.chleroy@kernel.org Signed-off-by: Jakub Kicinski --- diff --git a/net/socket.c b/net/socket.c index 68829d09bcf14..ade2ff5845a0c 100644 --- a/net/socket.c +++ b/net/socket.c @@ -280,23 +280,18 @@ static int move_addr_to_user(struct sockaddr_storage *kaddr, int klen, BUG_ON(klen > sizeof(struct sockaddr_storage)); - if (can_do_masked_user_access()) - ulen = masked_user_access_begin(ulen); - else if (!user_access_begin(ulen, 4)) - return -EFAULT; - - unsafe_get_user(len, ulen, efault_end); - - if (len > klen) - len = klen; - /* - * "fromlen shall refer to the value before truncation.." - * 1003.1g - */ - if (len >= 0) - unsafe_put_user(klen, ulen, efault_end); + scoped_user_rw_access_size(ulen, 4, efault_end) { + unsafe_get_user(len, ulen, efault_end); - user_access_end(); + if (len > klen) + len = klen; + /* + * "fromlen shall refer to the value before truncation.." + * 1003.1g + */ + if (len >= 0) + unsafe_put_user(klen, ulen, efault_end); + } if (len) { if (len < 0) @@ -309,7 +304,6 @@ static int move_addr_to_user(struct sockaddr_storage *kaddr, int klen, return 0; efault_end: - user_access_end(); return -EFAULT; }