From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Lang Dai <lang.dai@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 4.14 24/46] uio: free uio id after uio file node is freed
Date: Mon, 26 Oct 2020 20:09:23 -0400 [thread overview]
Message-ID: <20201027000946.1026923-24-sashal@kernel.org> (raw)
In-Reply-To: <20201027000946.1026923-1-sashal@kernel.org>
From: Lang Dai <lang.dai@intel.com>
[ Upstream commit 8fd0e2a6df262539eaa28b0a2364cca10d1dc662 ]
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 pool
2) 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 it
is 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 devices
Signed-off-by: Lang Dai <lang.dai@intel.com>
Link: https://lore.kernel.org/r/1600054002-17722-1-git-send-email-lang.dai@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/uio/uio.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
index 7c18536a3742a..4fc94b5e15ef4 100644
--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -1009,8 +1009,6 @@ void uio_unregister_device(struct uio_info *info)
idev = info->uio_dev;
- uio_free_minor(idev);
-
mutex_lock(&idev->info_lock);
uio_dev_del_attributes(idev);
@@ -1022,6 +1020,8 @@ void uio_unregister_device(struct uio_info *info)
device_unregister(&idev->dev);
+ uio_free_minor(idev);
+
return;
}
EXPORT_SYMBOL_GPL(uio_unregister_device);
--
2.25.1
next prev parent reply other threads:[~2020-10-27 0:10 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-27 0:09 [PATCH AUTOSEL 4.14 01/46] powerpc/powernv/smp: Fix spurious DBG() warning Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 02/46] powerpc: select ARCH_WANT_IRQS_OFF_ACTIVATE_MM Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 03/46] sparc64: remove mm_cpumask clearing to fix kthread_use_mm race Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 04/46] f2fs: add trace exit in exception path Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 05/46] f2fs: fix to check segment boundary during SIT page readahead Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 06/46] um: change sigio_spinlock to a mutex Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 07/46] MIPS: ftrace: Remove redundant #ifdef CONFIG_DYNAMIC_FTRACE Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 08/46] ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 09/46] xfs: fix realtime bitmap/summary file truncation when growing rt volume Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 10/46] video: fbdev: pvr2fb: initialize variables Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 11/46] ath10k: start recovery process when payload length exceeds max htc length for sdio Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 12/46] ath10k: fix VHT NSS calculation when STBC is enabled Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 13/46] drm/brige/megachips: Add checking if ge_b850v3_lvds_init() is working correctly Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 14/46] media: videodev2.h: RGB BT2020 and HSV are always full range Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 15/46] media: platform: Improve queue set up flow for bug fixing Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 16/46] usb: typec: tcpm: During PR_SWAP, source caps should be sent only after tSwapSourceStart Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 17/46] media: tw5864: check status of tw5864_frameinterval_get Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 18/46] mmc: via-sdmmc: Fix data race bug Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 19/46] drm/bridge/synopsys: dsi: add support for non-continuous HS clock Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 20/46] printk: reduce LOG_BUF_SHIFT range for H8300 Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 21/46] kgdb: Make "kgdbcon" work properly with "kgdb_earlycon" Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 22/46] cpufreq: sti-cpufreq: add stih418 support Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 23/46] USB: adutux: fix debugging Sasha Levin
2020-10-27 0:09 ` Sasha Levin [this message]
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 25/46] arm64/mm: return cpu_all_mask when node is NUMA_NO_NODE Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 26/46] ACPI: Add out of bounds and numa_off protections to pxm_to_node() Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 27/46] dm: change max_io_len() to use blk_max_size_offset() Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 28/46] drivers/net/wan/hdlc_fr: Correctly handle special skb->protocol values Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 29/46] bus/fsl_mc: Do not rely on caller to provide non NULL mc_io Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 30/46] power: supply: test_power: add missing newlines when printing parameters by sysfs Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 31/46] md/bitmap: md_bitmap_get_counter returns wrong blocks Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 32/46] bnxt_en: Log unknown link speed appropriately Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 33/46] clk: ti: clockdomain: fix static checker warning Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 34/46] asm-generic/io.h: Fix !CONFIG_GENERIC_IOMAP pci_iounmap() implementation Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 35/46] net: 9p: initialize sun_server.sun_path to have addr's value only when addr is valid Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 36/46] drivers: watchdog: rdc321x_wdt: Fix race condition bugs Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 37/46] ext4: Detect already used quota file early Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 38/46] gfs2: add validation checks for size of superblock Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 39/46] arm64: dts: renesas: ulcb: add full-pwr-cycle-in-suspend into eMMC nodes Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 40/46] memory: emif: Remove bogus debugfs error handling Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 41/46] ARM: dts: s5pv210: remove DMA controller bus node name to fix dtschema warnings Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 42/46] ARM: dts: s5pv210: move PMU node out of clock controller Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 43/46] ARM: dts: s5pv210: remove dedicated 'audio-subsystem' node Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 44/46] nbd: make the config put is called before the notifying the waiter Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 45/46] sgl_alloc_order: fix memory leak Sasha Levin
2020-10-27 0:09 ` [PATCH AUTOSEL 4.14 46/46] nvme-rdma: fix crash when connect rejected Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201027000946.1026923-24-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=lang.dai@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®