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")
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
net/core/rtnetlink.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index e03258e..648c984 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -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;
--
2.7.4
On Tue, 17 Jul 2018 08:43:14 -0500, Gustavo A. R. Silva wrote:
> 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")
> 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