X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=lib%2Fodp-util.c;h=442c939a7d5096ca59d0579176653e8a92e1c952;hb=b14c5fe9bd85b440d1727934c84d5f7fded051f7;hp=ccf05c6bd4259eb99783201edd160db06892556d;hpb=c4d279ab34078ff68fde5ac7b0f18a80803351ab;p=openvswitch diff --git a/lib/odp-util.c b/lib/odp-util.c index ccf05c6b..442c939a 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -30,13 +30,10 @@ union odp_action * odp_actions_add(struct odp_actions *actions, uint16_t type) { union odp_action *a; - if (actions->n_actions < MAX_ODP_ACTIONS) { - a = &actions->actions[actions->n_actions++]; - } else { - COVERAGE_INC(odp_overflow); - actions->n_actions = MAX_ODP_ACTIONS + 1; - a = &actions->actions[MAX_ODP_ACTIONS - 1]; - } + size_t idx; + + idx = actions->n_actions++ & (MAX_ODP_ACTIONS - 1); + a = &actions->actions[idx]; memset(a, 0, sizeof *a); a->type = type; return a;