]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hv_netvsc: Add check for kvmalloc_array
authorJiasheng Jiang <jiasheng@iscas.ac.cn>
Mon, 14 Mar 2022 02:01:25 +0000 (10:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 Mar 2022 08:10:44 +0000 (09:10 +0100)
[ Upstream commit 886e44c9298a6b428ae046e2fa092ca52e822e6a ]

As the potential failure of the kvmalloc_array(),
it should be better to check and restore the 'data'
if fails in order to avoid the dereference of the
NULL pointer.

Fixes: 6ae746711263 ("hv_netvsc: Add per-cpu ethtool stats for netvsc")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Link: https://lore.kernel.org/r/20220314020125.2365084-1-jiasheng@iscas.ac.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/hyperv/netvsc_drv.c

index 2dff0e110c6f3ff0f351ad07d1ae9d7940363122..f094e4bc21751bc48ed604c9ab501ce3dea86d3f 100644 (file)
@@ -1454,6 +1454,9 @@ static void netvsc_get_ethtool_stats(struct net_device *dev,
        pcpu_sum = kvmalloc_array(num_possible_cpus(),
                                  sizeof(struct netvsc_ethtool_pcpu_stats),
                                  GFP_KERNEL);
+       if (!pcpu_sum)
+               return;
+
        netvsc_get_pcpu_stats(dev, pcpu_sum);
        for_each_present_cpu(cpu) {
                struct netvsc_ethtool_pcpu_stats *this_sum = &pcpu_sum[cpu];