mirror of
https://github.com/torvalds/linux
synced 2024-11-02 18:48:59 +00:00
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: 12c2d0a5b8
("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>
This commit is contained in:
parent
4e0c19fcb8
commit
ba86af3733
1 changed files with 3 additions and 0 deletions
|
@ -716,6 +716,9 @@ int lan966x_stats_init(struct lan966x *lan966x)
|
|||
snprintf(queue_name, sizeof(queue_name), "%s-stats",
|
||||
dev_name(lan966x->dev));
|
||||
lan966x->stats_queue = create_singlethread_workqueue(queue_name);
|
||||
if (!lan966x->stats_queue)
|
||||
return -ENOMEM;
|
||||
|
||||
INIT_DELAYED_WORK(&lan966x->stats_work, lan966x_check_stats_work);
|
||||
queue_delayed_work(lan966x->stats_queue, &lan966x->stats_work,
|
||||
LAN966X_STATS_CHECK_DELAY);
|
||||
|
|
Loading…
Reference in a new issue