All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] zonefs: Fix race between modprobe and mount
@ 2022-11-20 10:57 Zhang Xiaoxu
  2022-11-21  8:46 ` Johannes Thumshirn
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Zhang Xiaoxu @ 2022-11-20 10:57 UTC (permalink / raw)
  To: linux-fsdevel, damien.lemoal, naohiro.aota, jth, zhangxiaoxu5

There is a race between modprobe and mount as below:

 modprobe zonefs                | mount -t zonefs
--------------------------------|-------------------------
 zonefs_init                    |
  register_filesystem       [1] |
                                | zonefs_fill_super    [2]
  zonefs_sysfs_init         [3] |

1. register zonefs suceess, then
2. user can mount the zonefs
3. if sysfs initialize failed, the module initialize failed.

Then the mount process maybe some error happened since the module
initialize failed.

Let's register zonefs after all dependency resource ready. And
reorder the dependency resource release in module exit.

Fixes: 9277a6d4fbd4 ("zonefs: Export open zone resource information through sysfs")
Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
---
 fs/zonefs/super.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c
index 860f0b1032c6..625749fbedf4 100644
--- a/fs/zonefs/super.c
+++ b/fs/zonefs/super.c
@@ -1905,18 +1905,18 @@ static int __init zonefs_init(void)
 	if (ret)
 		return ret;
 
-	ret = register_filesystem(&zonefs_type);
+	ret = zonefs_sysfs_init();
 	if (ret)
 		goto destroy_inodecache;
 
-	ret = zonefs_sysfs_init();
+	ret = register_filesystem(&zonefs_type);
 	if (ret)
-		goto unregister_fs;
+		goto sysfs_exit;
 
 	return 0;
 
-unregister_fs:
-	unregister_filesystem(&zonefs_type);
+sysfs_exit:
+	zonefs_sysfs_exit();
 destroy_inodecache:
 	zonefs_destroy_inodecache();
 
@@ -1925,9 +1925,9 @@ static int __init zonefs_init(void)
 
 static void __exit zonefs_exit(void)
 {
+	unregister_filesystem(&zonefs_type);
 	zonefs_sysfs_exit();
 	zonefs_destroy_inodecache();
-	unregister_filesystem(&zonefs_type);
 }
 
 MODULE_AUTHOR("Damien Le Moal");
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] zonefs: Fix race between modprobe and mount
  2022-11-20 10:57 [PATCH] zonefs: Fix race between modprobe and mount Zhang Xiaoxu
@ 2022-11-21  8:46 ` Johannes Thumshirn
  2022-11-22  5:12 ` Chaitanya Kulkarni
  2022-11-22  5:22 ` Damien Le Moal
  2 siblings, 0 replies; 4+ messages in thread
From: Johannes Thumshirn @ 2022-11-21  8:46 UTC (permalink / raw)
  To: Zhang Xiaoxu, linux-fsdevel, damien.lemoal, Naohiro Aota, jth

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] zonefs: Fix race between modprobe and mount
  2022-11-20 10:57 [PATCH] zonefs: Fix race between modprobe and mount Zhang Xiaoxu
  2022-11-21  8:46 ` Johannes Thumshirn
@ 2022-11-22  5:12 ` Chaitanya Kulkarni
  2022-11-22  5:22 ` Damien Le Moal
  2 siblings, 0 replies; 4+ messages in thread
From: Chaitanya Kulkarni @ 2022-11-22  5:12 UTC (permalink / raw)
  To: Zhang Xiaoxu, linux-fsdevel, damien.lemoal, naohiro.aota, jth

On 11/20/22 02:57, Zhang Xiaoxu wrote:
> There is a race between modprobe and mount as below:
> 
>   modprobe zonefs                | mount -t zonefs
> --------------------------------|-------------------------
>   zonefs_init                    |
>    register_filesystem       [1] |
>                                  | zonefs_fill_super    [2]
>    zonefs_sysfs_init         [3] |
> 
> 1. register zonefs suceess, then
> 2. user can mount the zonefs
> 3. if sysfs initialize failed, the module initialize failed.
> 
> Then the mount process maybe some error happened since the module
> initialize failed.
> 
> Let's register zonefs after all dependency resource ready. And
> reorder the dependency resource release in module exit.
> 
> Fixes: 9277a6d4fbd4 ("zonefs: Export open zone resource information through sysfs")
> Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
> ---

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>

-ck



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] zonefs: Fix race between modprobe and mount
  2022-11-20 10:57 [PATCH] zonefs: Fix race between modprobe and mount Zhang Xiaoxu
  2022-11-21  8:46 ` Johannes Thumshirn
  2022-11-22  5:12 ` Chaitanya Kulkarni
@ 2022-11-22  5:22 ` Damien Le Moal
  2 siblings, 0 replies; 4+ messages in thread
From: Damien Le Moal @ 2022-11-22  5:22 UTC (permalink / raw)
  To: Zhang Xiaoxu, linux-fsdevel, naohiro.aota, jth

On 11/20/22 19:57, Zhang Xiaoxu wrote:
> There is a race between modprobe and mount as below:
> 
>  modprobe zonefs                | mount -t zonefs
> --------------------------------|-------------------------
>  zonefs_init                    |
>   register_filesystem       [1] |
>                                 | zonefs_fill_super    [2]
>   zonefs_sysfs_init         [3] |
> 
> 1. register zonefs suceess, then
> 2. user can mount the zonefs
> 3. if sysfs initialize failed, the module initialize failed.
> 
> Then the mount process maybe some error happened since the module
> initialize failed.
> 
> Let's register zonefs after all dependency resource ready. And
> reorder the dependency resource release in module exit.
> 
> Fixes: 9277a6d4fbd4 ("zonefs: Export open zone resource information through sysfs")
> Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>

Applied to for-6.1-fixes. Thanks !

> ---
>  fs/zonefs/super.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c
> index 860f0b1032c6..625749fbedf4 100644
> --- a/fs/zonefs/super.c
> +++ b/fs/zonefs/super.c
> @@ -1905,18 +1905,18 @@ static int __init zonefs_init(void)
>  	if (ret)
>  		return ret;
>  
> -	ret = register_filesystem(&zonefs_type);
> +	ret = zonefs_sysfs_init();
>  	if (ret)
>  		goto destroy_inodecache;
>  
> -	ret = zonefs_sysfs_init();
> +	ret = register_filesystem(&zonefs_type);
>  	if (ret)
> -		goto unregister_fs;
> +		goto sysfs_exit;
>  
>  	return 0;
>  
> -unregister_fs:
> -	unregister_filesystem(&zonefs_type);
> +sysfs_exit:
> +	zonefs_sysfs_exit();
>  destroy_inodecache:
>  	zonefs_destroy_inodecache();
>  
> @@ -1925,9 +1925,9 @@ static int __init zonefs_init(void)
>  
>  static void __exit zonefs_exit(void)
>  {
> +	unregister_filesystem(&zonefs_type);
>  	zonefs_sysfs_exit();
>  	zonefs_destroy_inodecache();
> -	unregister_filesystem(&zonefs_type);
>  }
>  
>  MODULE_AUTHOR("Damien Le Moal");

-- 
Damien Le Moal
Western Digital Research


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-11-22  5:23 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-20 10:57 [PATCH] zonefs: Fix race between modprobe and mount Zhang Xiaoxu
2022-11-21  8:46 ` Johannes Thumshirn
2022-11-22  5:12 ` Chaitanya Kulkarni
2022-11-22  5:22 ` Damien Le Moal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.