]> git.baikalelectronics.ru Git - kernel.git/commit
net/sched: cls_u32: fix refcount leak in the error path of u32_change()
authorDavide Caratti <dcaratti@redhat.com>
Tue, 17 Dec 2019 23:00:04 +0000 (00:00 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Dec 2019 01:53:05 +0000 (17:53 -0800)
commit6986fc3820f9e431fcb95b543cb036969422beac
treeec1b8335b428eee44534c96e0d36913d51d4d3f7
parent734f5c1813c4f5eca77722f09d0c4c31b95e0ec1
net/sched: cls_u32: fix refcount leak in the error path of u32_change()

when users replace cls_u32 filters with new ones having wrong parameters,
so that u32_change() fails to validate them, the kernel doesn't roll-back
correctly, and leaves semi-configured rules.

Fix this in u32_walk(), avoiding a call to the walker function on filters
that don't have a match rule connected. The side effect is, these "empty"
filters are not even dumped when present; but that shouldn't be a problem
as long as we are restoring the original behaviour, where semi-configured
filters were not even added in the error path of u32_change().

Fixes: 4ef17f90fd45 ("net: sched: set dedicated tcf_walker flag when tp is empty")
Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_u32.c