net: lan966x: Fix potential null-ptr-deref in lan966x_stats_init()
authorShang XiaoJing <shangxiaojing@huawei.com>
Mon, 14 Nov 2022 13:38:52 +0000 (21:38 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Nov 2022 09:10:29 +0000 (09:10 +0000)
commitba86af3733aece88dbcee0dfebf7e2dcfefb2be4
treeb3734ca840cd360b87ddf1bd570c9add330ab952
parent4e0c19fcb8b5323716140fa82b79aa9f60e60407
net: lan966x: Fix potential null-ptr-deref in lan966x_stats_init()

lan966x_stats_init() calls create_singlethread_workqueue() and not
checked the ret value, which may return NULL. And a null-ptr-deref may
happen:

lan966x_stats_init()
    create_singlethread_workqueue() # failed, lan966x->stats_queue is NULL
    queue_delayed_work()
        queue_delayed_work_on()
            __queue_delayed_work()  # warning here, but continue
                __queue_work()      # access wq->flags, null-ptr-deref

Check the ret value and return -ENOMEM if it is NULL.

Fixes: 12c2d0a5b8e2 ("net: lan966x: add ethtool configuration and statistics")
Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
Reviewed-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/microchip/lan966x/lan966x_ethtool.c