1
0
Fork 0
alistair23-linux/fs/sysfs
Neil Brown 83db93f4de sysfs: Allow sysfs_notify_dirent to be called from interrupt context.
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>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-10-14 15:16:25 -07:00
..
Kconfig fs/Kconfig: move sysfs out 2009-01-22 13:15:56 +03:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bin.c const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
dir.c sysfs: Allow sysfs_move_dir(..., NULL) again. 2009-10-14 15:16:25 -07:00
file.c sysfs: Allow sysfs_notify_dirent to be called from interrupt context. 2009-10-14 15:16:25 -07:00
group.c Use WARN() in fs/sysfs 2008-07-26 12:00:07 -07:00
inode.c Merge branch 'writeback' of git://git.kernel.dk/linux-2.6-block 2009-09-11 09:17:05 -07:00
mount.c sysfs: reference sysfs_dirent from sysfs inodes 2009-03-24 16:38:25 -07:00
symlink.c sysfs: Add labeling support for sysfs 2009-09-10 10:11:29 +10:00
sysfs.h sysfs: Add labeling support for sysfs 2009-09-10 10:11:29 +10:00