Re: 2.6.21-rc suspend regression: sysfs deadlock

From: Linus Torvalds
Date: Wed Mar 07 2007 - 11:56:36 EST




On Wed, 7 Mar 2007, Dmitry Torokhov wrote:
>
> ... with the exception that it will again make data associated with
> sysfs attributes accessible past the point of returning from
> sysfs_remove_file. And that was the point so drivers would not have to
> care about handling access to extra data (such as static strings) past
> the driver unload.

Drivers are unloaded by stopping the whole machine (exactly because module
unload is otherwise so hard to handle), so that never happens unless you
actively block. In other words, if you do something as simple as

if (inode->i_private_data)
sysfs_flush_buffer(buffer);

then there is no race with unloading (unless the driver itself does
something stupid, of course - but the whole point of having a kernel
buffer is so that it does *not* have to make user accesses etc).

But the one thing you should *not* do is to depend on a sleeping lock,
because that breaks the whole model!

Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/