Skip to content

Commit

Permalink
orangefs: Fix sysfs not cleanup when dev init failed
Browse files Browse the repository at this point in the history
When the dev init failed, should cleanup the sysfs, otherwise, the
module will never be loaded since can not create duplicate sysfs
directory:

  sysfs: cannot create duplicate filename '/fs/orangefs'

  CPU: 1 PID: 6549 Comm: insmod Tainted: G        W          6.0.0+ raspberrypi#44
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1.fc33 04/01/2014
  Call Trace:
   <TASK>
   dump_stack_lvl+0x34/0x44
   sysfs_warn_dup.cold+0x17/0x24
   sysfs_create_dir_ns+0x16d/0x180
   kobject_add_internal+0x156/0x3a0
   kobject_init_and_add+0xcf/0x120
   orangefs_sysfs_init+0x7e/0x3a0 [orangefs]
   orangefs_init+0xfe/0x1000 [orangefs]
   do_one_initcall+0x87/0x2a0
   do_init_module+0xdf/0x320
   load_module+0x2f98/0x3330
   __do_sys_finit_module+0x113/0x1b0
   do_syscall_64+0x35/0x80
   entry_SYSCALL_64_after_hwframe+0x46/0xb0

  kobject_add_internal failed for orangefs with -EEXIST, don't try to register things with the same name in the same directory.

Fixes: 2f83ace ("orangefs: put register_chrdev immediately before register_filesystem")
Signed-off-by: Zhang Xiaoxu <zhangxiaoxu5@huawei.com>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
  • Loading branch information
z00467499 authored and hubcapsc committed Dec 7, 2022
1 parent 610defd commit ea60a4a
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions fs/orangefs/orangefs-mod.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ static int __init orangefs_init(void)
gossip_err("%s: could not initialize device subsystem %d!\n",
__func__,
ret);
goto cleanup_device;
goto cleanup_sysfs;
}

ret = register_filesystem(&orangefs_fs_type);
Expand All @@ -152,11 +152,11 @@ static int __init orangefs_init(void)
goto out;
}

orangefs_sysfs_exit();

cleanup_device:
orangefs_dev_cleanup();

cleanup_sysfs:
orangefs_sysfs_exit();

sysfs_init_failed:
orangefs_debugfs_cleanup();

Expand Down

0 comments on commit ea60a4a

Please sign in to comment.