]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
net: hns3: Resolved the issue that the debugfs query result is inconsistent.
authorHao Lan <lanhao@huawei.com>
Fri, 25 Oct 2024 09:29:34 +0000 (17:29 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 31 Oct 2024 10:15:42 +0000 (11:15 +0100)
This patch modifies the implementation of debugfs:
When the user process stops unexpectedly, not all data of the file system
is read. In this case, the save_buf pointer is not released. When the user
process is called next time, save_buf is used to copy the cached data
to the user space. As a result, the queried data is inconsistent. To solve
this problem, determine whether the function is invoked for the first time
based on the value of *ppos. If *ppos is 0, obtain the actual data.

Fixes: 5e69ea7ee2a6 ("net: hns3: refactor the debugfs process")
Signed-off-by: Hao Lan <lanhao@huawei.com>
Signed-off-by: Guangwei Zhang <zhangwangwei6@huawei.com>
Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c

index 807eb3bbb11c0408fbdcfa678586646fb92f8861..841e5af7b2beeff047d0835275f57adceaf6ba46 100644 (file)
@@ -1293,8 +1293,10 @@ static ssize_t hns3_dbg_read(struct file *filp, char __user *buffer,
 
                /* save the buffer addr until the last read operation */
                *save_buf = read_buf;
+       }
 
-               /* get data ready for the first time to read */
+       /* get data ready for the first time to read */
+       if (!*ppos) {
                ret = hns3_dbg_read_cmd(dbg_data, hns3_dbg_cmd[index].cmd,
                                        read_buf, hns3_dbg_cmd[index].buf_len);
                if (ret)