From 5721c788f25dda3be1b281331db262f6806ab35e Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Mon, 19 Sep 2011 16:23:25 -0700 Subject: [PATCH] datapath: Correctly set error code in queue_userspace_packets(). 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 Acked-by: Ben Pfaff --- datapath/datapath.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/datapath/datapath.c b/datapath/datapath.c index 98c2bafd..1fba23bf 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -449,8 +449,10 @@ static int queue_userspace_packets(struct datapath *dp, struct sk_buff *skb, 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 ovs_header); len += nla_total_size(skb->len); @@ -465,6 +467,7 @@ static int queue_userspace_packets(struct datapath *dp, struct sk_buff *skb, 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; } -- 2.30.2