diff options
Diffstat (limited to 'net/sched/cls_flower.c')
| -rw-r--r-- | net/sched/cls_flower.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index f6aa57fbbbaf..12ca9d13db83 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c | |||
| @@ -1371,7 +1371,7 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, | |||
| 1371 | if (!tc_skip_hw(fnew->flags)) { | 1371 | if (!tc_skip_hw(fnew->flags)) { |
| 1372 | err = fl_hw_replace_filter(tp, fnew, extack); | 1372 | err = fl_hw_replace_filter(tp, fnew, extack); |
| 1373 | if (err) | 1373 | if (err) |
| 1374 | goto errout_mask; | 1374 | goto errout_mask_ht; |
| 1375 | } | 1375 | } |
| 1376 | 1376 | ||
| 1377 | if (!tc_in_hw(fnew->flags)) | 1377 | if (!tc_in_hw(fnew->flags)) |
| @@ -1401,6 +1401,10 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, | |||
| 1401 | kfree(mask); | 1401 | kfree(mask); |
| 1402 | return 0; | 1402 | return 0; |
| 1403 | 1403 | ||
| 1404 | errout_mask_ht: | ||
| 1405 | rhashtable_remove_fast(&fnew->mask->ht, &fnew->ht_node, | ||
| 1406 | fnew->mask->filter_ht_params); | ||
| 1407 | |||
| 1404 | errout_mask: | 1408 | errout_mask: |
| 1405 | fl_mask_put(head, fnew->mask, false); | 1409 | fl_mask_put(head, fnew->mask, false); |
| 1406 | 1410 | ||
