|
|
@@ -2306,14 +2306,14 @@ static struct nlattr *reserve_sfa_size(struct sw_flow_actions **sfa,
|
|
|
|
|
|
struct sw_flow_actions *acts;
|
|
|
int new_acts_size;
|
|
|
- int req_size = NLA_ALIGN(attr_len);
|
|
|
+ size_t req_size = NLA_ALIGN(attr_len);
|
|
|
int next_offset = offsetof(struct sw_flow_actions, actions) +
|
|
|
(*sfa)->actions_len;
|
|
|
|
|
|
if (req_size <= (ksize(*sfa) - next_offset))
|
|
|
goto out;
|
|
|
|
|
|
- new_acts_size = ksize(*sfa) * 2;
|
|
|
+ new_acts_size = max(next_offset + req_size, ksize(*sfa) * 2);
|
|
|
|
|
|
if (new_acts_size > MAX_ACTIONS_BUFSIZE) {
|
|
|
if ((MAX_ACTIONS_BUFSIZE - next_offset) < req_size) {
|