Skip to contentSkip to conversation

rtnetlink: fix uninitialized variable

PATCH In review Gustavo A. R. Silva 2 participants 2 messages Jul 17, 2018

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rtnetlink: fix uninitialized variable

Currently, there are execution paths in which variable err is returned without being properly initialized previously:

1417 if (rtnl_xdp_report_one(skb, dev, &prog_id, &mode, XDP_ATTACHED_SKB,
1418 IFLA_XDP_SKB_PROG_ID, rtnl_xdp_prog_skb))
1419 goto err_cancel;
1420 if (rtnl_xdp_report_one(skb, dev, &prog_id, &mode, XDP_ATTACHED_DRV,
1421 IFLA_XDP_DRV_PROG_ID, rtnl_xdp_prog_drv))
1422 goto err_cancel;
1423 if (rtnl_xdp_report_one(skb, dev, &prog_id, &mode, XDP_ATTACHED_HW,
1424 IFLA_XDP_HW_PROG_ID, rtnl_xdp_prog_hw))
1425 goto err_cancel;

Fix this by initializing variable err to -EMSGSIZE.

Addresses-Coverity-ID: 1471831 ("Uninitialized scalar variable")

Fixes a25717d2b604 ("xdp: support simultaneous driver and hw XDP attachment")
---
 net/core/rtnetlink.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
net/core/rtnetlink.c +2 -2
index e03258e..648c984 100644
@@ -1405,12 +1405,12 @@ static int rtnl_xdp_fill(struct sk_buff *skb, struct net_device *dev)
 {
 	struct nlattr *xdp;
 	u32 prog_id;
-	int err;
+	int err = -EMSGSIZE;
 	u8 mode;
 
 	xdp = nla_nest_start(skb, IFLA_XDP);
 	if (!xdp)
-		return -EMSGSIZE;
+		return err;
 
 	prog_id = 0;
 	mode = XDP_ATTACHED_NONE;
Signature · 1 line
2.7.4
#1 lore raw
Quoted 13 lines · Gustavo A. R. Silva

Currently, there are execution paths in which variable err is returned without being properly initialized previously:

1417 if (rtnl_xdp_report_one(skb, dev, &prog_id, &mode, XDP_ATTACHED_SKB,
1418 IFLA_XDP_SKB_PROG_ID, rtnl_xdp_prog_skb))
1419 goto err_cancel;
1420 if (rtnl_xdp_report_one(skb, dev, &prog_id, &mode, XDP_ATTACHED_DRV,
1421 IFLA_XDP_DRV_PROG_ID, rtnl_xdp_prog_drv))
1422 goto err_cancel;
1423 if (rtnl_xdp_report_one(skb, dev, &prog_id, &mode, XDP_ATTACHED_HW,
1424 IFLA_XDP_HW_PROG_ID, rtnl_xdp_prog_hw))
1425 goto err_cancel;

Quoted 5 lines

Fix this by initializing variable err to -EMSGSIZE.

Addresses-Coverity-ID: 1471831 ("Uninitialized scalar variable")

Fixes a25717d2b604 ("xdp: support simultaneous driver and hw XDP attachment")

Looks like duplicate of:

http://patchwork.ozlabs.org/patch/944662/

Strage GCC doesn't catch this even with W=1, the code is fairly straightforward :S