]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: sched: sch_taprio: fix memleak in error path for sched list parse
authorIvan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Tue, 6 Aug 2019 22:45:40 +0000 (01:45 +0300)
committerSasha Levin <sashal@kernel.org>
Sun, 25 Aug 2019 14:10:36 +0000 (10:10 -0400)
[ Upstream commit 51650d33b2771acd505068da669cf85cffac369a ]

In error case, all entries should be freed from the sched list
before deleting it. For simplicity use rcu way.

Fixes: 5a781ccbd19e46 ("tc: Add support for configuring the taprio scheduler")
Acked-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/sched/sch_taprio.c

index 9ecfb8f5902a4ff285dbcf14497c293a13a76696..8be89aa52b6e8b8fedef343ac5d35e22ff9836d9 100644 (file)
@@ -849,7 +849,8 @@ unlock:
        spin_unlock_bh(qdisc_lock(sch));
 
 free_sched:
-       kfree(new_admin);
+       if (new_admin)
+               call_rcu(&new_admin->rcu, taprio_free_sched_cb);
 
        return err;
 }