]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: hns3: check resetting status in hns3_get_stats()
authorHuazhong Tan <tanhuazhong@huawei.com>
Thu, 4 Apr 2019 08:17:56 +0000 (16:17 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 May 2019 13:45:10 +0000 (06:45 -0700)
[ Upstream commit c4e401e5a934bb0798ebbba98e08dab129695eff ]

hns3_get_stats() should check the resetting status firstly,
since the device will be reinitialized when resetting. If the
reset has not completed, the hns3_get_stats() may access
invalid memory.

Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c

index e678b6939da39e6d9b099da0976c81b5bda4f914..36b35c58304b59bc71e9ed717913aa30d618ce50 100644 (file)
@@ -482,6 +482,11 @@ static void hns3_get_stats(struct net_device *netdev,
        struct hnae3_handle *h = hns3_get_handle(netdev);
        u64 *p = data;
 
+       if (hns3_nic_resetting(netdev)) {
+               netdev_err(netdev, "dev resetting, could not get stats\n");
+               return;
+       }
+
        if (!h->ae_algo->ops->get_stats || !h->ae_algo->ops->update_stats) {
                netdev_err(netdev, "could not get any statistics\n");
                return;