aboutsummaryrefslogtreecommitdiffstats
path: root/net/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/socket.c')
-rw-r--r--net/socket.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/net/socket.c b/net/socket.c
index 01f3f8f32d6f..fae408abea54 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -635,7 +635,7 @@ EXPORT_SYMBOL(sock_sendmsg);
635int kernel_sendmsg(struct socket *sock, struct msghdr *msg, 635int kernel_sendmsg(struct socket *sock, struct msghdr *msg,
636 struct kvec *vec, size_t num, size_t size) 636 struct kvec *vec, size_t num, size_t size)
637{ 637{
638 iov_iter_kvec(&msg->msg_iter, WRITE | ITER_KVEC, vec, num, size); 638 iov_iter_kvec(&msg->msg_iter, WRITE, vec, num, size);
639 return sock_sendmsg(sock, msg); 639 return sock_sendmsg(sock, msg);
640} 640}
641EXPORT_SYMBOL(kernel_sendmsg); 641EXPORT_SYMBOL(kernel_sendmsg);
@@ -648,7 +648,7 @@ int kernel_sendmsg_locked(struct sock *sk, struct msghdr *msg,
648 if (!sock->ops->sendmsg_locked) 648 if (!sock->ops->sendmsg_locked)
649 return sock_no_sendmsg_locked(sk, msg, size); 649 return sock_no_sendmsg_locked(sk, msg, size);
650 650
651 iov_iter_kvec(&msg->msg_iter, WRITE | ITER_KVEC, vec, num, size); 651 iov_iter_kvec(&msg->msg_iter, WRITE, vec, num, size);
652 652
653 return sock->ops->sendmsg_locked(sk, msg, msg_data_left(msg)); 653 return sock->ops->sendmsg_locked(sk, msg, msg_data_left(msg));
654} 654}
@@ -823,7 +823,7 @@ int kernel_recvmsg(struct socket *sock, struct msghdr *msg,
823 mm_segment_t oldfs = get_fs(); 823 mm_segment_t oldfs = get_fs();
824 int result; 824 int result;
825 825
826 iov_iter_kvec(&msg->msg_iter, READ | ITER_KVEC, vec, num, size); 826 iov_iter_kvec(&msg->msg_iter, READ, vec, num, size);
827 set_fs(KERNEL_DS); 827 set_fs(KERNEL_DS);
828 result = sock_recvmsg(sock, msg, flags); 828 result = sock_recvmsg(sock, msg, flags);
829 set_fs(oldfs); 829 set_fs(oldfs);
@@ -1475,7 +1475,7 @@ int __sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
1475 sock = sockfd_lookup_light(fd, &err, &fput_needed); 1475 sock = sockfd_lookup_light(fd, &err, &fput_needed);
1476 if (sock) { 1476 if (sock) {
1477 err = move_addr_to_kernel(umyaddr, addrlen, &address); 1477 err = move_addr_to_kernel(umyaddr, addrlen, &address);
1478 if (err >= 0) { 1478 if (!err) {
1479 err = security_socket_bind(sock, 1479 err = security_socket_bind(sock,
1480 (struct sockaddr *)&address, 1480 (struct sockaddr *)&address,
1481 addrlen); 1481 addrlen);
@@ -2875,9 +2875,14 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
2875 copy_in_user(&rxnfc->fs.ring_cookie, 2875 copy_in_user(&rxnfc->fs.ring_cookie,
2876 &compat_rxnfc->fs.ring_cookie, 2876 &compat_rxnfc->fs.ring_cookie,
2877 (void __user *)(&rxnfc->fs.location + 1) - 2877 (void __user *)(&rxnfc->fs.location + 1) -
2878 (void __user *)&rxnfc->fs.ring_cookie) || 2878 (void __user *)&rxnfc->fs.ring_cookie))
2879 copy_in_user(&rxnfc->rule_cnt, &compat_rxnfc->rule_cnt, 2879 return -EFAULT;
2880 sizeof(rxnfc->rule_cnt))) 2880 if (ethcmd == ETHTOOL_GRXCLSRLALL) {
2881 if (put_user(rule_cnt, &rxnfc->rule_cnt))
2882 return -EFAULT;
2883 } else if (copy_in_user(&rxnfc->rule_cnt,
2884 &compat_rxnfc->rule_cnt,
2885 sizeof(rxnfc->rule_cnt)))
2881 return -EFAULT; 2886 return -EFAULT;
2882 } 2887 }
2883 2888