Commit e2444c1d authored by Donald Hunter's avatar Donald Hunter Committed by Pablo Neira Ayuso

netfilter: nfnetlink: convert kfree_skb to consume_skb

Use consume_skb in the batch code path to avoid generating spurious
NOT_SPECIFIED skb drop reasons.
Signed-off-by: default avatarDonald Hunter <donald.hunter@gmail.com>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 4e97d521
...@@ -402,27 +402,27 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh, ...@@ -402,27 +402,27 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh,
{ {
nfnl_unlock(subsys_id); nfnl_unlock(subsys_id);
netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL); netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL);
return kfree_skb(skb); return consume_skb(skb);
} }
} }
if (!ss->valid_genid || !ss->commit || !ss->abort) { if (!ss->valid_genid || !ss->commit || !ss->abort) {
nfnl_unlock(subsys_id); nfnl_unlock(subsys_id);
netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL); netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL);
return kfree_skb(skb); return consume_skb(skb);
} }
if (!try_module_get(ss->owner)) { if (!try_module_get(ss->owner)) {
nfnl_unlock(subsys_id); nfnl_unlock(subsys_id);
netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL); netlink_ack(oskb, nlh, -EOPNOTSUPP, NULL);
return kfree_skb(skb); return consume_skb(skb);
} }
if (!ss->valid_genid(net, genid)) { if (!ss->valid_genid(net, genid)) {
module_put(ss->owner); module_put(ss->owner);
nfnl_unlock(subsys_id); nfnl_unlock(subsys_id);
netlink_ack(oskb, nlh, -ERESTART, NULL); netlink_ack(oskb, nlh, -ERESTART, NULL);
return kfree_skb(skb); return consume_skb(skb);
} }
nfnl_unlock(subsys_id); nfnl_unlock(subsys_id);
...@@ -567,7 +567,7 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh, ...@@ -567,7 +567,7 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh,
if (status & NFNL_BATCH_REPLAY) { if (status & NFNL_BATCH_REPLAY) {
ss->abort(net, oskb, NFNL_ABORT_AUTOLOAD); ss->abort(net, oskb, NFNL_ABORT_AUTOLOAD);
nfnl_err_reset(&err_list); nfnl_err_reset(&err_list);
kfree_skb(skb); consume_skb(skb);
module_put(ss->owner); module_put(ss->owner);
goto replay; goto replay;
} else if (status == NFNL_BATCH_DONE) { } else if (status == NFNL_BATCH_DONE) {
...@@ -593,7 +593,7 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh, ...@@ -593,7 +593,7 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh,
err = ss->abort(net, oskb, abort_action); err = ss->abort(net, oskb, abort_action);
if (err == -EAGAIN) { if (err == -EAGAIN) {
nfnl_err_reset(&err_list); nfnl_err_reset(&err_list);
kfree_skb(skb); consume_skb(skb);
module_put(ss->owner); module_put(ss->owner);
status |= NFNL_BATCH_FAILURE; status |= NFNL_BATCH_FAILURE;
goto replay_abort; goto replay_abort;
...@@ -601,7 +601,7 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh, ...@@ -601,7 +601,7 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh,
} }
nfnl_err_deliver(&err_list, oskb); nfnl_err_deliver(&err_list, oskb);
kfree_skb(skb); consume_skb(skb);
module_put(ss->owner); module_put(ss->owner);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment