[Ocfs2-devel] [PATCH] ocfs2: Fix memory leak in ocfs2_stack_glue_init()

Joseph Qi joseph.qi at linux.alibaba.com
Tue Nov 1 11:15:33 UTC 2022



On 11/1/22 2:47 PM, Shang XiaoJing wrote:
> ocfs2_table_header should be free in ocfs2_stack_glue_init() if
> ocfs2_sysfs_init() failed, otherwise kmemleak will report memleak.
> 
> BUG: memory leak
> unreferenced object 0xffff88810eeb5800 (size 128):
>   comm "modprobe", pid 4507, jiffies 4296182506 (age 55.888s)
>   hex dump (first 32 bytes):
>     c0 40 14 a0 ff ff ff ff 00 00 00 00 01 00 00 00  . at ..............
>     01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
>   backtrace:
>     [<000000001e59e1cd>] __register_sysctl_table+0xca/0xef0
>     [<00000000c04f70f7>] 0xffffffffa0050037
>     [<000000001bd12912>] do_one_initcall+0xdb/0x480
>     [<0000000064f766c9>] do_init_module+0x1cf/0x680
>     [<000000002ba52db0>] load_module+0x6441/0x6f20
>     [<000000009772580d>] __do_sys_finit_module+0x12f/0x1c0
>     [<00000000380c1f22>] do_syscall_64+0x3f/0x90
>     [<000000004cf473bc>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
> 
> Fixes: 3878f110f71a ("ocfs2: Move the hb_ctl_path sysctl into the stack glue.")
> Signed-off-by: Shang XiaoJing <shangxiaojing at huawei.com>

Looks good.
Reviewed-by: Joseph Qi <joseph.qi at linux.alibaba.com>

> ---
>  fs/ocfs2/stackglue.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/ocfs2/stackglue.c b/fs/ocfs2/stackglue.c
> index 317126261523..a8d5ca98fa57 100644
> --- a/fs/ocfs2/stackglue.c
> +++ b/fs/ocfs2/stackglue.c
> @@ -669,6 +669,8 @@ static struct ctl_table_header *ocfs2_table_header;
>  
>  static int __init ocfs2_stack_glue_init(void)
>  {
> +	int ret;
> +
>  	strcpy(cluster_stack_name, OCFS2_STACK_PLUGIN_O2CB);
>  
>  	ocfs2_table_header = register_sysctl("fs/ocfs2/nm", ocfs2_nm_table);
> @@ -678,7 +680,11 @@ static int __init ocfs2_stack_glue_init(void)
>  		return -ENOMEM; /* or something. */
>  	}
>  
> -	return ocfs2_sysfs_init();
> +	ret = ocfs2_sysfs_init();
> +	if (ret)
> +		unregister_sysctl_table(ocfs2_table_header);
> +
> +	return ret;
>  }
>  
>  static void __exit ocfs2_stack_glue_exit(void)



More information about the Ocfs2-devel mailing list