mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 18:56:24 +00:00
net: microchip: sparx5: Fix potential null-ptr-deref in sparx_stats_init() and sparx5_start()
sparx_stats_init() calls create_singlethread_workqueue() and not checked the ret value, which may return NULL. And a null-ptr-deref may happen: sparx_stats_init() create_singlethread_workqueue() # failed, sparx5->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. So as sparx5_start(). Fixes: af4b11022e2d ("net: sparx5: add ethtool configuration and statistics support") Fixes: b37a1bae742f ("net: sparx5: add mactable support") Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ba86af3733
commit
639f5d006e
@ -1253,6 +1253,9 @@ int sparx_stats_init(struct sparx5 *sparx5)
|
||||
snprintf(queue_name, sizeof(queue_name), "%s-stats",
|
||||
dev_name(sparx5->dev));
|
||||
sparx5->stats_queue = create_singlethread_workqueue(queue_name);
|
||||
if (!sparx5->stats_queue)
|
||||
return -ENOMEM;
|
||||
|
||||
INIT_DELAYED_WORK(&sparx5->stats_work, sparx5_check_stats_work);
|
||||
queue_delayed_work(sparx5->stats_queue, &sparx5->stats_work,
|
||||
SPX5_STATS_CHECK_DELAY);
|
||||
|
@ -659,6 +659,9 @@ static int sparx5_start(struct sparx5 *sparx5)
|
||||
snprintf(queue_name, sizeof(queue_name), "%s-mact",
|
||||
dev_name(sparx5->dev));
|
||||
sparx5->mact_queue = create_singlethread_workqueue(queue_name);
|
||||
if (!sparx5->mact_queue)
|
||||
return -ENOMEM;
|
||||
|
||||
INIT_DELAYED_WORK(&sparx5->mact_work, sparx5_mact_pull_work);
|
||||
queue_delayed_work(sparx5->mact_queue, &sparx5->mact_work,
|
||||
SPX5_MACT_PULL_DELAY);
|
||||
|
Loading…
x
Reference in New Issue
Block a user