rtnetlink: fix uninitialized variable
Subsystems (2)
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")
--- net/core/rtnetlink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/core/rtnetlink.c +2 -2
@@ -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
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,
1418IFLA_XDP_SKB_PROG_ID,rtnl_xdp_prog_skb))
1419 gotoerr_cancel;
1420 if (rtnl_xdp_report_one(skb, dev,&prog_id, &mode,XDP_ATTACHED_DRV,
1421IFLA_XDP_DRV_PROG_ID,rtnl_xdp_prog_drv))
1422 gotoerr_cancel;
1423 if (rtnl_xdp_report_one(skb, dev,&prog_id, &mode,XDP_ATTACHED_HW,
1424IFLA_XDP_HW_PROG_ID,rtnl_xdp_prog_hw))
1425 gotoerr_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")Signed-off-by Gustavo A. R. Silva <[email protected]>
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