summaryrefslogtreecommitdiffstats
path: root/net/sched/act_skbedit.c
diff options
context:
space:
mode:
authorDavide Caratti <dcaratti@redhat.com>2019-02-22 12:33:25 +0100
committerDavid S. Miller <davem@davemloft.net>2019-02-24 17:28:55 -0800
commit8f67c90ee9148eab3d2b4393c3cf76489b27f87c (patch)
treee9d41ec3a771e961bdcd5c073f3038f7d6eabcba /net/sched/act_skbedit.c
parentc3619a482e15d98e1d2eb6b32952e753077e7545 (diff)
downloadlinux-8f67c90ee9148eab3d2b4393c3cf76489b27f87c.tar.bz2
net/sched: act_ipt: fix refcount leak when replace fails
After commit 4e8ddd7f1758 ("net: sched: don't release reference on action overwrite"), the error path of all actions was converted to drop refcount also when the action was being overwritten. But we forgot act_ipt_init(), in case allocation of 'tname' was not successful: # tc action add action xt -j LOG --log-prefix hello index 100 tablename: mangle hook: NF_IP_POST_ROUTING target: LOG level warning prefix "hello" index 100 # tc action show action xt total acts 1 action order 0: tablename: mangle hook: NF_IP_POST_ROUTING target LOG level warning prefix "hello" index 100 ref 1 bind 0 # tc action replace action xt -j LOG --log-prefix world index 100 tablename: mangle hook: NF_IP_POST_ROUTING target: LOG level warning prefix "world" index 100 RTNETLINK answers: Cannot allocate memory We have an error talking to the kernel # tc action show action xt total acts 1 action order 0: tablename: mangle hook: NF_IP_POST_ROUTING target LOG level warning prefix "hello" index 100 ref 2 bind 0 Ensure we call tcf_idr_release(), in case 'tname' allocation failed, also when the action is being replaced. Fixes: 4e8ddd7f1758 ("net: sched: don't release reference on action overwrite") Signed-off-by: Davide Caratti <dcaratti@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/act_skbedit.c')
0 files changed, 0 insertions, 0 deletions