projects
/
cascardo
/
ovs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
datapath: add skb_clone NULL check in the recirc action.
[cascardo/ovs.git]
/
datapath
/
actions.c
diff --git
a/datapath/actions.c
b/datapath/actions.c
index
603c7cb
..
1583a95
100644
(file)
--- a/
datapath/actions.c
+++ b/
datapath/actions.c
@@
-619,15
+619,17
@@
static int do_execute_actions(struct datapath *dp, struct sk_buff *skb,
case OVS_ACTION_ATTR_RECIRC: {
struct sk_buff *recirc_skb;
case OVS_ACTION_ATTR_RECIRC: {
struct sk_buff *recirc_skb;
- if (!last_action(a, rem))
- recirc_skb = skb_clone(skb, GFP_ATOMIC);
- else
- recirc_skb = skb;
+ if (last_action(a, rem))
+ return execute_recirc(dp, skb, a);
- err = execute_recirc(dp, recirc_skb, a);
+ /* Recirc action is the not the last action
+ * of the action list. */
+ recirc_skb = skb_clone(skb, GFP_ATOMIC);
- if (recirc_skb == skb)
- return err;
+ /* Skip the recirc action when out of memory, but
+ * continue on with the rest of the action list. */
+ if (recirc_skb)
+ err = execute_recirc(dp, recirc_skb, a);
break;
}
break;
}