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

Reply via email to