提交 62ae8e0a 编写于 作者: X Xiaomeng Tong 提交者: Zheng Zengkai

net: dsa: bcm_sf2_cfp: fix an incorrect NULL check on list iterator

stable inclusion
from stable-v5.10.110
commit 1752fcd4045b4b33fd80b8018848d739043e805a
bugzilla: https://gitee.com/openeuler/kernel/issues/I574AL

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=1752fcd4045b4b33fd80b8018848d739043e805a

--------------------------------

[ Upstream commit 6da69b1d ]

The bug is here:
	return rule;

The list iterator value 'rule' will *always* be set and non-NULL
by list_for_each_entry(), so it is incorrect to assume that the
iterator value will be NULL if the list is empty or no element
is found.

To fix the bug, return 'rule' when found, otherwise return NULL.

Fixes: ae7a5aff ("net: dsa: bcm_sf2: Keep copy of inserted rules")
Reviewed-by: NVladimir Oltean <olteanv@gmail.com>
Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: NXiaomeng Tong <xiam0nd.tong@gmail.com>
Link: https://lore.kernel.org/r/20220328032431.22538-1-xiam0nd.tong@gmail.comSigned-off-by: NJakub Kicinski <kuba@kernel.org>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NYu Liao <liaoyu15@huawei.com>
Reviewed-by: NWei Li <liwei391@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 229f9f0b
...@@ -567,14 +567,14 @@ static void bcm_sf2_cfp_slice_ipv6(struct bcm_sf2_priv *priv, ...@@ -567,14 +567,14 @@ static void bcm_sf2_cfp_slice_ipv6(struct bcm_sf2_priv *priv,
static struct cfp_rule *bcm_sf2_cfp_rule_find(struct bcm_sf2_priv *priv, static struct cfp_rule *bcm_sf2_cfp_rule_find(struct bcm_sf2_priv *priv,
int port, u32 location) int port, u32 location)
{ {
struct cfp_rule *rule = NULL; struct cfp_rule *rule;
list_for_each_entry(rule, &priv->cfp.rules_list, next) { list_for_each_entry(rule, &priv->cfp.rules_list, next) {
if (rule->port == port && rule->fs.location == location) if (rule->port == port && rule->fs.location == location)
break; return rule;
} }
return rule; return NULL;
} }
static int bcm_sf2_cfp_rule_cmp(struct bcm_sf2_priv *priv, int port, static int bcm_sf2_cfp_rule_cmp(struct bcm_sf2_priv *priv, int port,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册