X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=net%2Fnetlink%2Faf_netlink.c;h=a774985489e21e3bafffa8c8b6947290d0f58f75;hb=f74741615368af1b8401be4b7a6f0b9ccbc2420a;hp=d8e2e3918ce2fd95637c4cba8bfc4886feb91ea6;hpb=c2f3ba745d1c2013811cac6308c4abf9527c478e;p=mirror_ubuntu-bionic-kernel.git diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index d8e2e3918ce2..a774985489e2 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1096,6 +1096,11 @@ static int netlink_insert(struct sock *sk, u32 portid) err = __netlink_insert(table, sk); if (err) { + /* In case the hashtable backend returns with -EBUSY + * from here, it must not escape to the caller. + */ + if (unlikely(err == -EBUSY)) + err = -EOVERFLOW; if (err == -EEXIST) err = -EADDRINUSE; nlk_sk(sk)->portid = 0; @@ -2396,7 +2401,7 @@ static int netlink_sendmsg(struct socket *sock, struct msghdr *msg, size_t len) * sendmsg(), but that's what we've got... */ if (netlink_tx_is_mmaped(sk) && - msg->msg_iter.type == ITER_IOVEC && + iter_is_iovec(&msg->msg_iter) && msg->msg_iter.nr_segs == 1 && msg->msg_iter.iov->iov_base == NULL) { err = netlink_mmap_sendmsg(sk, msg, dst_portid, dst_group,