mirror of https://gitee.com/openkylin/linux.git
can: af_can: can_pernet_init(): add missing error handling for kzalloc returning NULL
This patch adds the missing check and error handling for out-of-memory
situations, when kzalloc cannot allocate memory.
Fixes: cb5635a367
("can: complete initial namespace support")
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
cae1d5b78f
commit
5a606223c6
|
@ -875,9 +875,14 @@ static int can_pernet_init(struct net *net)
|
|||
spin_lock_init(&net->can.can_rcvlists_lock);
|
||||
net->can.can_rx_alldev_list =
|
||||
kzalloc(sizeof(struct dev_rcv_lists), GFP_KERNEL);
|
||||
|
||||
if (!net->can.can_rx_alldev_list)
|
||||
goto out;
|
||||
net->can.can_stats = kzalloc(sizeof(struct s_stats), GFP_KERNEL);
|
||||
if (!net->can.can_stats)
|
||||
goto out_free_alldev_list;
|
||||
net->can.can_pstats = kzalloc(sizeof(struct s_pstats), GFP_KERNEL);
|
||||
if (!net->can.can_pstats)
|
||||
goto out_free_can_stats;
|
||||
|
||||
if (IS_ENABLED(CONFIG_PROC_FS)) {
|
||||
/* the statistics are updated every second (timer triggered) */
|
||||
|
@ -892,6 +897,13 @@ static int can_pernet_init(struct net *net)
|
|||
}
|
||||
|
||||
return 0;
|
||||
|
||||
out_free_can_stats:
|
||||
kfree(net->can.can_stats);
|
||||
out_free_alldev_list:
|
||||
kfree(net->can.can_rx_alldev_list);
|
||||
out:
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
static void can_pernet_exit(struct net *net)
|
||||
|
|
Loading…
Reference in New Issue