X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Fflow.c;h=7684c061aaaed2541ce202d60c39168837eaad7c;hb=51a66e1bc935c50afe955da947cf253adf115751;hp=dbfe5dd733d7692adf84732eef17ff512080fed8;hpb=aa536b6e43828e23c48c54612d4047024f209eeb;p=sliver-openvswitch.git diff --git a/datapath/flow.c b/datapath/flow.c index dbfe5dd73..7684c061a 100644 --- a/datapath/flow.c +++ b/datapath/flow.c @@ -108,7 +108,10 @@ struct sw_flow_actions *flow_actions_alloc(size_t n_actions) { struct sw_flow_actions *sfa; - if (n_actions > (PAGE_SIZE - sizeof *sfa) / sizeof(union odp_action)) + /* At least DP_MAX_PORTS actions are required to be able to flood a + * packet to every port. Factor of 2 allows for setting VLAN tags, + * etc. */ + if (n_actions > 2 * DP_MAX_PORTS) return ERR_PTR(-EINVAL); sfa = kmalloc(sizeof *sfa + n_actions * sizeof(union odp_action),