Jia-Ju Bai
2021-Mar-09 02:28 UTC
[Bridge] [PATCH] net: bridge: fix error return code of do_update_counters()
When find_table_lock() returns NULL to t, no error return code of do_update_counters() is assigned. To fix this bug, ret is assigned with -ENOENT in this case. Fixes: 49facff9f925 ("netfilter: ebtables: split update_counters into two functions") Reported-by: TOTE Robot <oslab at tsinghua.edu.cn> Signed-off-by: Jia-Ju Bai <baijiaju1990 at gmail.com> --- net/bridge/netfilter/ebtables.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index ebe33b60efd6..66c9e4077985 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c @@ -1256,8 +1256,10 @@ static int do_update_counters(struct net *net, const char *name, return -ENOMEM; t = find_table_lock(net, name, &ret, &ebt_mutex); - if (!t) + if (!t) { + ret = -ENOENT; goto free_tmp; + } if (num_counters != t->private->nentries) { ret = -EINVAL; -- 2.17.1
Florian Westphal
2021-Mar-09 11:01 UTC
[Bridge] [PATCH] net: bridge: fix error return code of do_update_counters()
Jia-Ju Bai <baijiaju1990 at gmail.com> wrote:> When find_table_lock() returns NULL to t, no error return code of > do_update_counters() is assigned.Its -ENOENT.> t = find_table_lock(net, name, &ret, &ebt_mutex);^^^^^ ret is passed to find_table_lock, which passes it to find_inlist_lock_noload() which will set *ret = -ENOENT for NULL case.