]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/core/sock.c
net: Add missing getsockopt for SO_NOFCS.
[karo-tx-linux.git] / net / core / sock.c
index 3e81fd2e3c75ca01ed972e98f3bc3f344fe5bfe6..216719cb5c7f2f44a8831390113809eaa33d3f09 100644 (file)
@@ -793,6 +793,17 @@ set_rcvbuf:
                sock_valbool_flag(sk, SOCK_WIFI_STATUS, valbool);
                break;
 
+       case SO_PEEK_OFF:
+               if (sock->ops->set_peek_off)
+                       sock->ops->set_peek_off(sk, val);
+               else
+                       ret = -EOPNOTSUPP;
+               break;
+
+       case SO_NOFCS:
+               sock_valbool_flag(sk, SOCK_NOFCS, valbool);
+               break;
+
        default:
                ret = -ENOPROTOOPT;
                break;
@@ -1018,6 +1029,15 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
                v.val = !!sock_flag(sk, SOCK_WIFI_STATUS);
                break;
 
+       case SO_PEEK_OFF:
+               if (!sock->ops->set_peek_off)
+                       return -EOPNOTSUPP;
+
+               v.val = sk->sk_peek_off;
+               break;
+       case SO_NOFCS:
+               v.val = !!sock_flag(sk, SOCK_NOFCS);
+               break;
        default:
                return -ENOPROTOOPT;
        }
@@ -1171,13 +1191,10 @@ EXPORT_SYMBOL(sock_update_classid);
 
 void sock_update_netprioidx(struct sock *sk)
 {
-       struct cgroup_netprio_state *state;
        if (in_interrupt())
                return;
-       rcu_read_lock();
-       state = task_netprio_state(current);
-       sk->sk_cgrp_prioidx = state ? state->prioidx : 0;
-       rcu_read_unlock();
+
+       sk->sk_cgrp_prioidx = task_netprioidx(current);
 }
 EXPORT_SYMBOL_GPL(sock_update_netprioidx);
 #endif
@@ -2095,6 +2112,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
 
        sk->sk_sndmsg_page      =       NULL;
        sk->sk_sndmsg_off       =       0;
+       sk->sk_peek_off         =       -1;
 
        sk->sk_peer_pid         =       NULL;
        sk->sk_peer_cred        =       NULL;