mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
mctp: convert to getsockopt_iter
Convert MCTP socket's getsockopt implementation to use the new getsockopt_iter callback with sockopt_t. Key changes: - Replace (char __user *optval, int __user *optlen) with sockopt_t *opt - Use opt->optlen for buffer length (input) - Use copy_to_iter() instead of copy_to_user() - Add linux/uio.h for copy_to_iter() Signed-off-by: Breno Leitao <leitao@debian.org> Link: https://patch.msgid.link/20260507-getsock_two-v2-1-5873111d9c12@debian.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
70f764ecca
commit
85f22f66f3
@@ -12,6 +12,7 @@
|
||||
#include <linux/mctp.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/socket.h>
|
||||
#include <linux/uio.h>
|
||||
|
||||
#include <net/mctp.h>
|
||||
#include <net/mctpdevice.h>
|
||||
@@ -405,7 +406,7 @@ static int mctp_setsockopt(struct socket *sock, int level, int optname,
|
||||
}
|
||||
|
||||
static int mctp_getsockopt(struct socket *sock, int level, int optname,
|
||||
char __user *optval, int __user *optlen)
|
||||
sockopt_t *opt)
|
||||
{
|
||||
struct mctp_sock *msk = container_of(sock->sk, struct mctp_sock, sk);
|
||||
int len, val;
|
||||
@@ -413,14 +414,13 @@ static int mctp_getsockopt(struct socket *sock, int level, int optname,
|
||||
if (level != SOL_MCTP)
|
||||
return -EINVAL;
|
||||
|
||||
if (get_user(len, optlen))
|
||||
return -EFAULT;
|
||||
len = opt->optlen;
|
||||
|
||||
if (optname == MCTP_OPT_ADDR_EXT) {
|
||||
if (len != sizeof(int))
|
||||
return -EINVAL;
|
||||
val = !!msk->addr_ext;
|
||||
if (copy_to_user(optval, &val, len))
|
||||
if (copy_to_iter(&val, len, &opt->iter_out) != len)
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
@@ -639,7 +639,7 @@ static const struct proto_ops mctp_dgram_ops = {
|
||||
.listen = sock_no_listen,
|
||||
.shutdown = sock_no_shutdown,
|
||||
.setsockopt = mctp_setsockopt,
|
||||
.getsockopt = mctp_getsockopt,
|
||||
.getsockopt_iter = mctp_getsockopt,
|
||||
.sendmsg = mctp_sendmsg,
|
||||
.recvmsg = mctp_recvmsg,
|
||||
.mmap = sock_no_mmap,
|
||||
|
||||
Reference in New Issue
Block a user