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: Convert put_cmsg() to scoped user access

Replace the open coded implementation with the scoped user access guard.

That also corrects the imbalance between masked_user_access_begin() and
user_write_access_end(), which would affect PowerPC when it gains masked
user access support.

No functional change intended.

[ tglx: Amend change log ]

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://patch.msgid.link/793219313f641eda09a892d06768d2837246bf9f.1763396724.git.christophe.leroy@csgroup.eu

authored by

Christophe Leroy and committed by
Thomas Gleixner
1c204914 803abedb

+7 -13
+7 -13
net/core/scm.c
··· 273 273 274 274 check_object_size(data, cmlen - sizeof(*cm), true); 275 275 276 - if (can_do_masked_user_access()) 277 - cm = masked_user_access_begin(cm); 278 - else if (!user_write_access_begin(cm, cmlen)) 279 - goto efault; 280 - 281 - unsafe_put_user(cmlen, &cm->cmsg_len, efault_end); 282 - unsafe_put_user(level, &cm->cmsg_level, efault_end); 283 - unsafe_put_user(type, &cm->cmsg_type, efault_end); 284 - unsafe_copy_to_user(CMSG_USER_DATA(cm), data, 285 - cmlen - sizeof(*cm), efault_end); 286 - user_write_access_end(); 276 + scoped_user_write_access_size(cm, cmlen, efault) { 277 + unsafe_put_user(cmlen, &cm->cmsg_len, efault); 278 + unsafe_put_user(level, &cm->cmsg_level, efault); 279 + unsafe_put_user(type, &cm->cmsg_type, efault); 280 + unsafe_copy_to_user(CMSG_USER_DATA(cm), data, 281 + cmlen - sizeof(*cm), efault); 282 + } 287 283 } else { 288 284 struct cmsghdr *cm = msg->msg_control; 289 285 ··· 297 301 msg->msg_controllen -= cmlen; 298 302 return 0; 299 303 300 - efault_end: 301 - user_write_access_end(); 302 304 efault: 303 305 return -EFAULT; 304 306 }