]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
netfilter: nfnetlink: convert kfree_skb to consume_skb
authorDonald Hunter <donald.hunter@gmail.com>
Tue, 28 May 2024 10:37:54 +0000 (11:37 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 19 Aug 2024 16:44:50 +0000 (18:44 +0200)
Use consume_skb in the batch code path to avoid generating spurious
NOT_SPECIFIED skb drop reasons.

Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nfnetlink.c

index 932b3ddb34f13c44333b32abd534b12f1d12955d..7784ec094097bc7166cc2065229d36363ece2aa4 100644 (file)
@@ -402,27 +402,27 @@ replay_abort:
                {
                        nfnl_unlock(subsys_id);
                        netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL);
-                       return kfree_skb(skb);
+                       return consume_skb(skb);
                }
        }
 
        if (!ss->valid_genid || !ss->commit || !ss->abort) {
                nfnl_unlock(subsys_id);
                netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL);
-               return kfree_skb(skb);
+               return consume_skb(skb);
        }
 
        if (!try_module_get(ss->owner)) {
                nfnl_unlock(subsys_id);
                netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL);
-               return kfree_skb(skb);
+               return consume_skb(skb);
        }
 
        if (!ss->valid_genid(net, genid)) {
                module_put(ss->owner);
                nfnl_unlock(subsys_id);
                netlink_ack(oskb, nlh, -ERESTART, NULL);
-               return kfree_skb(skb);
+               return consume_skb(skb);
        }
 
        nfnl_unlock(subsys_id);
@@ -567,7 +567,7 @@ done:
        if (status & NFNL_BATCH_REPLAY) {
                ss->abort(net, oskb, NFNL_ABORT_AUTOLOAD);
                nfnl_err_reset(&err_list);
-               kfree_skb(skb);
+               consume_skb(skb);
                module_put(ss->owner);
                goto replay;
        } else if (status == NFNL_BATCH_DONE) {
@@ -593,7 +593,7 @@ done:
                err = ss->abort(net, oskb, abort_action);
                if (err == -EAGAIN) {
                        nfnl_err_reset(&err_list);
-                       kfree_skb(skb);
+                       consume_skb(skb);
                        module_put(ss->owner);
                        status |= NFNL_BATCH_FAILURE;
                        goto replay_abort;
@@ -601,7 +601,7 @@ done:
        }
 
        nfnl_err_deliver(&err_list, oskb);
-       kfree_skb(skb);
+       consume_skb(skb);
        module_put(ss->owner);
 }