Commit c295160b authored by Hao Chen's avatar Hao Chen Committed by Paolo Abeni

net: hns3: fix debugfs concurrency issue between kfree buffer and read

Now in hns3_dbg_uninit(), there may be concurrency between
kfree buffer and read, it may result in memory error.

Moving debugfs_remove_recursive() in front of kfree buffer to ensure
they don't happen at the same time.

Fixes: 5e69ea7e ("net: hns3: refactor the debugfs process")
Signed-off-by: default avatarHao Chen <chenhao418@huawei.com>
Signed-off-by: default avatarJijie Shao <shaojijie@huawei.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent efccf655
...@@ -1415,9 +1415,9 @@ int hns3_dbg_init(struct hnae3_handle *handle) ...@@ -1415,9 +1415,9 @@ int hns3_dbg_init(struct hnae3_handle *handle)
return 0; return 0;
out: out:
mutex_destroy(&handle->dbgfs_lock);
debugfs_remove_recursive(handle->hnae3_dbgfs); debugfs_remove_recursive(handle->hnae3_dbgfs);
handle->hnae3_dbgfs = NULL; handle->hnae3_dbgfs = NULL;
mutex_destroy(&handle->dbgfs_lock);
return ret; return ret;
} }
...@@ -1425,6 +1425,9 @@ void hns3_dbg_uninit(struct hnae3_handle *handle) ...@@ -1425,6 +1425,9 @@ void hns3_dbg_uninit(struct hnae3_handle *handle)
{ {
u32 i; u32 i;
debugfs_remove_recursive(handle->hnae3_dbgfs);
handle->hnae3_dbgfs = NULL;
for (i = 0; i < ARRAY_SIZE(hns3_dbg_cmd); i++) for (i = 0; i < ARRAY_SIZE(hns3_dbg_cmd); i++)
if (handle->dbgfs_buf[i]) { if (handle->dbgfs_buf[i]) {
kvfree(handle->dbgfs_buf[i]); kvfree(handle->dbgfs_buf[i]);
...@@ -1432,8 +1435,6 @@ void hns3_dbg_uninit(struct hnae3_handle *handle) ...@@ -1432,8 +1435,6 @@ void hns3_dbg_uninit(struct hnae3_handle *handle)
} }
mutex_destroy(&handle->dbgfs_lock); mutex_destroy(&handle->dbgfs_lock);
debugfs_remove_recursive(handle->hnae3_dbgfs);
handle->hnae3_dbgfs = NULL;
} }
void hns3_dbg_register_debugfs(const char *debugfs_dir_name) void hns3_dbg_register_debugfs(const char *debugfs_dir_name)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment