Merge branch 'stable-4.8' of git://git.infradead.org/users/pcmoore/selinux into next
[deliverable/linux.git] / net / ipv6 / ipv6_sockglue.c
index 8a80d59bed344228d99dbaca464ed04138eb1ef9..5330262ab673c022fbf700d22782a74ccd1494fe 100644 (file)
@@ -406,7 +406,8 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
                if (optname != IPV6_RTHDR && !ns_capable(net->user_ns, CAP_NET_RAW))
                        break;
 
-               opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk));
+               opt = rcu_dereference_protected(np->opt,
+                                               lockdep_sock_is_held(sk));
                opt = ipv6_renew_options(sk, opt, optname,
                                         (struct ipv6_opt_hdr __user *)optval,
                                         optlen);
@@ -470,7 +471,8 @@ sticky_done:
                struct ipv6_txoptions *opt = NULL;
                struct msghdr msg;
                struct flowi6 fl6;
-               int junk;
+               struct sockcm_cookie sockc_junk;
+               struct ipcm6_cookie ipc6;
 
                memset(&fl6, 0, sizeof(fl6));
                fl6.flowi6_oif = sk->sk_bound_dev_if;
@@ -500,9 +502,9 @@ sticky_done:
 
                msg.msg_controllen = optlen;
                msg.msg_control = (void *)(opt+1);
+               ipc6.opt = opt;
 
-               retv = ip6_datagram_send_ctl(net, sk, &msg, &fl6, opt, &junk,
-                                            &junk, &junk);
+               retv = ip6_datagram_send_ctl(net, sk, &msg, &fl6, &ipc6, &sockc_junk);
                if (retv)
                        goto done;
 update:
@@ -1122,7 +1124,8 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
                struct ipv6_txoptions *opt;
 
                lock_sock(sk);
-               opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk));
+               opt = rcu_dereference_protected(np->opt,
+                                               lockdep_sock_is_held(sk));
                len = ipv6_getsockopt_sticky(sk, opt, optname, optval, len);
                release_sock(sk);
                /* check if ipv6_getsockopt_sticky() returns err code */
This page took 0.024827 seconds and 5 git commands to generate.