Files
linux-legacy/fs
Neil Brown 5b78a76304 sysfs: Allow sysfs_notify_dirent to be called from interrupt context.
commit 83db93f4de2d9ae441a491d1dc61c2204f0195de upstream.

sysfs_notify_dirent is a simple atomic operation that can be used to
alert user-space that new data can be read from a sysfs attribute.

Unfortunately it cannot currently be called from non-process context
because of its use of spin_lock which is sometimes taken with
interrupts enabled.

So change all lockers of sysfs_open_dirent_lock to disable interrupts,
thus making sysfs_notify_dirent safe to be called from non-process
context (as drivers/md does in md_safemode_timeout).

sysfs_get_open_dirent is (documented as being) only called from
process context, so it uses spin_lock_irq.  Other places
use spin_lock_irqsave.

The usage for sysfs_notify_dirent in md_safemode_timeout was
introduced in 2.6.28, so this patch is suitable for that and more
recent kernels.

Reported-by: Joel Andres Granados <jgranado@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-10-22 15:11:59 -07:00
..
2009-07-12 12:22:34 -07:00
2009-06-11 21:36:14 -04:00
2009-06-11 21:36:01 -04:00
2009-07-12 12:22:34 -07:00
2009-08-21 10:09:44 +02:00
2009-10-05 09:31:42 -07:00
2009-06-24 08:15:24 -04:00
2009-07-14 12:28:43 -05:00
2009-06-17 00:36:36 -04:00
2009-07-12 12:22:34 -07:00
2009-09-05 13:41:08 -07:00
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-07-12 12:22:34 -07:00
2009-07-10 19:18:59 -07:00
2009-07-12 12:22:34 -07:00
2009-06-15 21:44:43 -07:00
2009-06-15 21:44:43 -07:00
2009-06-11 21:36:13 -04:00
2009-10-05 09:33:01 -07:00
2009-06-11 21:36:12 -04:00
2009-07-30 17:31:23 +02:00
2009-07-12 12:22:34 -07:00
2009-06-11 21:36:07 -04:00
2009-07-12 12:22:34 -07:00
2009-06-17 00:36:37 -04:00
2009-07-12 12:22:34 -07:00
2009-06-18 13:03:46 -07:00
2009-06-30 18:55:58 -07:00
…
2009-07-12 12:22:34 -07:00
2009-06-11 21:36:06 -04:00
2009-06-18 13:03:41 -07:00
2009-07-12 12:22:34 -07:00
…
…
2009-06-11 21:36:07 -04:00
…
2009-07-14 12:34:17 +09:00
…
…
2009-10-12 12:40:22 -07:00
…
…
…
…
…
2009-04-20 23:02:52 -04:00
…
…
2009-06-11 21:36:02 -04:00