X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fflow.c;h=7684c061aaaed2541ce202d60c39168837eaad7c;hb=92467099ee05b930b060d34d05b81bb1322e6fbf;hp=dbfe5dd733d7692adf84732eef17ff512080fed8;hpb=d295e8e97acae13552a5b220d3fbcff8201064a2;p=openvswitch diff --git a/datapath/flow.c b/datapath/flow.c index dbfe5dd7..7684c061 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),