aboutsummaryrefslogtreecommitdiff
path: root/datapath
diff options
context:
space:
mode:
authorJesse Gross <jesse@nicira.com>2011-02-28 14:26:39 -0800
committerJesse Gross <jesse@nicira.com>2011-03-03 12:12:53 -0800
commitd76195db5a0780626e2742b184b86aeae60972bc (patch)
tree757441e017813c83dd57d3332017d0726680303f /datapath
parent46aef12ee5fcb028d20bac654c8a08cf993cfac8 (diff)
datapath: Record upcall errors as lost packets.
It's possible to encounter a few different errors when preparing to send a packet to userspace in queue_control_packet(). This ensures that if we encounter one of these problems, the issue is properly recorded as a lost packet. Signed-off-by: Jesse Gross <jesse@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath')
-rw-r--r--datapath/datapath.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/datapath/datapath.c b/datapath/datapath.c
index 733acad7..69b524c5 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -441,7 +441,11 @@ int dp_upcall(struct datapath *dp, struct sk_buff *skb, const struct dp_upcall_i
}
}
- return queue_control_packets(dp, skb, upcall_info);
+ err = queue_control_packets(dp, skb, upcall_info);
+ if (err)
+ goto err;
+
+ return 0;
err_kfree_skb:
kfree_skb(skb);