net: hns3: fix one incorrect value of page pool info when queried by debugfs
authorHao Chen <chenhao288@hisilicon.com>
Fri, 26 Nov 2021 12:03:17 +0000 (20:03 +0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 26 Nov 2021 19:36:29 +0000 (11:36 -0800)
Currently, when user queries page pool info by debugfs command
"cat page_pool_info", the cnt of allocated page for page pool may be
incorrect because of memory inconsistency problem caused by compiler
optimization.

So this patch uses READ_ONCE() to read value of pages_state_hold_cnt to
fix this problem.

Fixes: 850bfb912a6d ("net: hns3: debugfs add support dumping page pool info")
Signed-off-by: Hao Chen <chenhao288@hisilicon.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c

index fbb8a5f..081295b 100644 (file)
@@ -1081,7 +1081,8 @@ static void hns3_dump_page_pool_info(struct hns3_enet_ring *ring,
        u32 j = 0;
 
        sprintf(result[j++], "%u", index);
-       sprintf(result[j++], "%u", ring->page_pool->pages_state_hold_cnt);
+       sprintf(result[j++], "%u",
+               READ_ONCE(ring->page_pool->pages_state_hold_cnt));
        sprintf(result[j++], "%u",
                atomic_read(&ring->page_pool->pages_state_release_cnt));
        sprintf(result[j++], "%u", ring->page_pool->p.pool_size);