[NETLINK]: Fix use-after-free in netlink_recvmsg
The skb given to netlink_cmsg_recv_pktinfo is already freed, move it up a few lines. Coverity #948 Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f8dc01f543
commit
cc9a06cd8d
|
@ -1194,6 +1194,9 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
||||||
msg->msg_namelen = sizeof(*addr);
|
msg->msg_namelen = sizeof(*addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nlk->flags & NETLINK_RECV_PKTINFO)
|
||||||
|
netlink_cmsg_recv_pktinfo(msg, skb);
|
||||||
|
|
||||||
if (NULL == siocb->scm) {
|
if (NULL == siocb->scm) {
|
||||||
memset(&scm, 0, sizeof(scm));
|
memset(&scm, 0, sizeof(scm));
|
||||||
siocb->scm = &scm;
|
siocb->scm = &scm;
|
||||||
|
@ -1205,8 +1208,6 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
||||||
netlink_dump(sk);
|
netlink_dump(sk);
|
||||||
|
|
||||||
scm_recv(sock, msg, siocb->scm, flags);
|
scm_recv(sock, msg, siocb->scm, flags);
|
||||||
if (nlk->flags & NETLINK_RECV_PKTINFO)
|
|
||||||
netlink_cmsg_recv_pktinfo(msg, skb);
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
netlink_rcv_wake(sk);
|
netlink_rcv_wake(sk);
|
||||||
|
|
Loading…
Reference in New Issue