Skip to content

Commit 1c20491

Browse files
chleroyKAGA-KOKO
authored andcommitted
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
1 parent 803abed commit 1c20491

1 file changed

Lines changed: 7 additions & 13 deletions

File tree

net/core/scm.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -273,17 +273,13 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
273273

274274
check_object_size(data, cmlen - sizeof(*cm), true);
275275

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+
}
287283
} else {
288284
struct cmsghdr *cm = msg->msg_control;
289285

@@ -301,8 +297,6 @@ int put_cmsg(struct msghdr * msg, int level, int type, int len, void *data)
301297
msg->msg_controllen -= cmlen;
302298
return 0;
303299

304-
efault_end:
305-
user_write_access_end();
306300
efault:
307301
return -EFAULT;
308302
}

0 commit comments

Comments
 (0)