Driver core: fix race in sysfs between sysfs_remove_file() and read()/write()

This patch prevents a race between IO and removing a file from sysfs.
It introduces a list of sysfs_buffers associated with a file at the inode.
Upon removal of a file the list is walked and the buffers marked orphaned.
IO to orphaned buffers fails with -ENODEV. The driver can safely free
associated data structures or be unloaded.

Signed-off-by: Oliver Neukum <oliver@neukum.name>
Acked-by: Maneesh Soni <maneesh@in.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Oliver Neukum
2006-12-20 10:52:44 +01:00
committed by Greg Kroah-Hartman
parent cb986b749c
commit 94bebf4d1b
8 changed files with 103 additions and 17 deletions

View File

@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>
#include "sysfs.h"