mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 10:11:52 -04:00
staging: gdm72xx: fix an skb memory leak
The NLMSG_PUT() macro contains a hidden goto that jumps to the nlmsg_failure label. Since the sk_buff was allocated before the macro, jumping to the nlmsg_failure label leaks the memory allocated for it. Calling kfree() before returning would fix it, but is better to avoid using this error prone macro and use nlmsg_put() instead. Also, use nlmsg_data() instead of NLMSG_DATA() to check type. Signed-off-by: Javier Martinez Canillas <javier@dowhile0.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e8abca1f30
commit
2da049bd5f
@@ -126,8 +126,13 @@ int netlink_send(struct sock *sock, int group, u16 type, void *msg, int len)
|
||||
}
|
||||
|
||||
seq++;
|
||||
nlh = NLMSG_PUT(skb, 0, seq, type, len);
|
||||
memcpy(NLMSG_DATA(nlh), msg, len);
|
||||
nlh = nlmsg_put(skb, 0, seq, type, len, 0);
|
||||
if (!nlh) {
|
||||
kfree_skb(skb);
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
||||
memcpy(nlmsg_data(nlh), msg, len);
|
||||
|
||||
NETLINK_CB(skb).pid = 0;
|
||||
NETLINK_CB(skb).dst_group = 0;
|
||||
@@ -144,6 +149,5 @@ int netlink_send(struct sock *sock, int group, u16 type, void *msg, int len)
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
nlmsg_failure:
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user