In a few places in queue_userspace_packets() when we encounter an
error, we don't actually set the 'err' variable. Although we
free the packets we don't correctly account for these packets as
being lost.
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
if (unlikely(err))
goto err_kfree_skbs;
- if (nla_attr_size(skb->len) > USHRT_MAX)
+ if (nla_attr_size(skb->len) > USHRT_MAX) {
+ err = -EFBIG;
goto err_kfree_skbs;
+ }
len = sizeof(struct odp_header);
len += nla_total_size(skb->len);
user_skb = genlmsg_new(len, GFP_ATOMIC);
if (!user_skb) {
netlink_set_err(INIT_NET_GENL_SOCK, 0, group, -ENOBUFS);
+ err = -ENOMEM;
goto err_kfree_skbs;
}