Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8fd0e2a

Browse files
langdai1gregkh
authored andcommitted
uio: free uio id after uio file node is freed
uio_register_device() do two things.1) get an uio id from a global pool, e.g. the id is <A>2) create file nodes like /sys/class/uio/uio<A>uio_unregister_device() do two things.1) free the uio id <A> and return it to the global pool2) free the file node /sys/class/uio/uio<A>There is a situation is that one worker is calling uio_unregister_device(),and another worker is calling uio_register_device().If the two workers are X and Y, they go as below sequence,1) X free the uio id <AAA>2) Y get an uio id <AAA>3) Y create file node /sys/class/uio/uio<AAA>4) X free the file note /sys/class/uio/uio<AAA>Then it will failed at the 3rd step and cause the phenomenon we saw as itis creating a duplicated file node.Failure reports as follows:sysfs: cannot create duplicate filename '/class/uio/uio10'Call Trace: sysfs_do_create_link_sd.isra.2+0x9e/0xb0 sysfs_create_link+0x25/0x40 device_add+0x2c4/0x640 __uio_register_device+0x1c5/0x576 [uio] adf_uio_init_bundle_dev+0x231/0x280 [intel_qat] adf_uio_register+0x1c0/0x340 [intel_qat] adf_dev_start+0x202/0x370 [intel_qat] adf_dev_start_async+0x40/0xa0 [intel_qat] process_one_work+0x14d/0x410 worker_thread+0x4b/0x460 kthread+0x105/0x140 ? process_one_work+0x410/0x410 ? kthread_bind+0x40/0x40 ret_from_fork+0x1f/0x40 Code: 85 c0 48 89 c3 74 12 b9 00 10 00 00 48 89 c2 31 f6 4c 89 ef e8 ec c4 ff ff 4c 89 e2 48 89 de 48 c7 c7 e8 b4 ee b4 e8 6a d4 d7 ff <0f> 0b 48 89 df e8 20 fa f3 ff 5b 41 5c 41 5d 5d c3 66 0f 1f 84---[ end trace a7531c1ed5269e84 ]--- c6xxvf b002:00:00.0: Failed to register UIO devices c6xxvf b002:00:00.0: Failed to register UIO devicesSigned-off-by: Lang Dai <lang.dai@intel.com>Link:https://lore.kernel.org/r/1600054002-17722-1-git-send-email-lang.dai@intel.comSigned-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parentb1c194d commit8fd0e2a

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

‎drivers/uio/uio.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,8 +1048,6 @@ void uio_unregister_device(struct uio_info *info)
10481048

10491049
idev=info->uio_dev;
10501050

1051-
uio_free_minor(idev);
1052-
10531051
mutex_lock(&idev->info_lock);
10541052
uio_dev_del_attributes(idev);
10551053

@@ -1064,6 +1062,8 @@ void uio_unregister_device(struct uio_info *info)
10641062

10651063
device_unregister(&idev->dev);
10661064

1065+
uio_free_minor(idev);
1066+
10671067
return;
10681068
}
10691069
EXPORT_SYMBOL_GPL(uio_unregister_device);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp