From: Davide Caratti <dcara...@redhat.com> Date: Fri, 22 Feb 2019 12:33:25 +0100
> 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 <dcara...@redhat.com> Applied and queued up for -stable.