]> Pileus Git - ~andy/linux/blobdiff - net/netlink/af_netlink.c
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[~andy/linux] / net / netlink / af_netlink.c
index 0a4db0211da08416dc23bc55bfb5b203809bbd34..1201b6d4183d8993b1175119978a3baee4481eec 100644 (file)
@@ -1324,10 +1324,9 @@ static int netlink_sendmsg(struct kiocb *kiocb, struct socket *sock,
        if (msg->msg_flags&MSG_OOB)
                return -EOPNOTSUPP;
 
-       if (NULL == siocb->scm) {
+       if (NULL == siocb->scm)
                siocb->scm = &scm;
-               memset(&scm, 0, sizeof(scm));
-       }
+
        err = scm_send(sock, msg, siocb->scm);
        if (err < 0)
                return err;
@@ -1578,7 +1577,7 @@ int __netlink_change_ngroups(struct sock *sk, unsigned int groups)
                new = kzalloc(sizeof(*new) + NLGRPSZ(groups), GFP_ATOMIC);
                if (!new)
                        return -ENOMEM;
-               old = rcu_dereference_raw(tbl->listeners);
+               old = rcu_dereference_protected(tbl->listeners, 1);
                memcpy(new->masks, old->masks, NLGRPSZ(tbl->groups));
                rcu_assign_pointer(tbl->listeners, new);