Thread (28 messages) 28 messages, 2 authors, 2021-08-10

[Bug 212337] scsi_debug: race at module load and module unload

From: <hidden>
Date: 2021-05-04 21:22:52

https://bugzilla.kernel.org/show_bug.cgi?id=212337
--- Comment #14 from Luis Chamberlain (mcgrof@kernel.org) ---
(In reply to d gilbert from comment #8)
On 2021-03-18 3:14 p.m., bugzilla-daemon@bugzilla.kernel.org wrote:
quoted
https://bugzilla.kernel.org/show_bug.cgi?id=212337
--- Comment #4 from Luis Chamberlain (mcgrof@kernel.org) ---
I'm afraid scsi_debug is filled with bug bombs bound to happen, because it
was
written without certain consideration of races now coming up as tangible
with
quoted
syfs / driver load. Namely, if you hold a lock at init and also use it on
sysfs
attributes you can easily deadlock. I discovered this issue first with the
zram
driver, and fixed the issue with try_module_get()'s on each driver sysfs
attribute, I posted patches for that, for discussion on that see the post
[0]
quoted
[1], although discussion is mostly on the first patch, the patch you want
to
quoted
look at is the second one [1].

[0] https://lkml.kernel.org/r/20210306022035.11266-2-mcgrof@kernel.org
[1] https://lkml.kernel.org/r/20210306022035.11266-3-mcgrof@kernel.org

I considered fixing scsi_debug in light of this, but given that module
initialization is *also* calling helpers used by syfs attributes, *and*
this
quoted
is
also true at module removal, I'm afraid much more care is needed here. In
my
quoted
patch to zram for the sysfs issue I mention ways to trigger the deadlock,
if
quoted
you're up for the task to fix that, it would be wonderful. But hey, these
are
quoted
separate issues. just figured you should be aware.
In the hack proposed above, not much would appear in sysfs until that thread
finished adding at least adding its first host by which time
scsi_debug_init()
should have long since finished.
The sysfs races are a bit more complex than what I think is being conveyed. I
will Cc you on some fixes for zram which demo what the issues are, which are
generic, which I also think we need to fix in this driver. There would be two
issues:

 * the syfs deadlock
 * races against the private data which is type specific

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help