net: xdp: pull ethernet header off packet after computing skb->protocol
[linux-2.6-block.git] / net / socket.c
index c61f036d24f57f726df7fdbfa7fa63656328dd7b..dbbe8ea7d395dadf690a4c2dfdf60ed40c49df6d 100644 (file)
@@ -1325,7 +1325,7 @@ int sock_wake_async(struct socket_wq *wq, int how, int band)
        case SOCK_WAKE_SPACE:
                if (!test_and_clear_bit(SOCKWQ_ASYNC_NOSPACE, &wq->flags))
                        break;
-               /* fall through */
+               fallthrough;
        case SOCK_WAKE_IO:
 call_kill:
                kill_fasync(&wq->fasync_list, SIGIO, band);
@@ -2095,7 +2095,7 @@ static bool sock_use_custom_sol_socket(const struct socket *sock)
 int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval,
                int optlen)
 {
-       sockptr_t optval;
+       sockptr_t optval = USER_SOCKPTR(user_optval);
        char *kernel_optval = NULL;
        int err, fput_needed;
        struct socket *sock;
@@ -2103,10 +2103,6 @@ int __sys_setsockopt(int fd, int level, int optname, char __user *user_optval,
        if (optlen < 0)
                return -EINVAL;
 
-       err = init_user_sockptr(&optval, user_optval, optlen);
-       if (err)
-               return err;
-
        sock = sockfd_lookup_light(fd, &err, &fput_needed);
        if (!sock)
                return err;
@@ -3158,13 +3154,13 @@ static int ethtool_ioctl(struct net *net, struct compat_ifreq __user *ifr32)
                if (rule_cnt > KMALLOC_MAX_SIZE / sizeof(u32))
                        return -ENOMEM;
                buf_size += rule_cnt * sizeof(u32);
-               /* fall through */
+               fallthrough;
        case ETHTOOL_GRXRINGS:
        case ETHTOOL_GRXCLSRLCNT:
        case ETHTOOL_GRXCLSRULE:
        case ETHTOOL_SRXCLSRLINS:
                convert_out = true;
-               /* fall through */
+               fallthrough;
        case ETHTOOL_SRXCLSRLDEL:
                buf_size += sizeof(struct ethtool_rxnfc);
                convert_in = true;