Patch "sysfs: fix race between readdir and lseek" has been added to the 3.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
sysfs: fix race between readdir and lseek
to the 3.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sysfs-fix-race-between-readdir-and-lseek.patch
and it can be found in the queue-3.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
991f76f837bf22c5bb07261cfd86525a0a96650cMon Sep 17 00:00:00 2001
From: Ming Lei <[email protected]>
Date: Wed, 20 Mar 2013 23:25:24 +0800
Subject: sysfs: fix race between readdir and lseek
From: Ming Lei <[email protected]>
commit 991f76f837bf22c5bb07261cfd86525a0a96650c upstream.
While readdir() is running, lseek() may set filp->f_pos as zero, then may leave filp->private_data pointing to one sysfs_dirent object without holding its reference counter, so the sysfs_dirent object may be used after free in next readdir().
This patch holds inode->i_mutex to avoid the problem since the lock is always held in readdir path.
--- fs/sysfs/dir.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
fs/sysfs/dir.c +12 -1
@@ -1040,10 +1040,21 @@ static int sysfs_readdir(struct file * freturn 0 ; } +static loff_t sysfs_dir_llseek (struct file *file,loff_t offset,int whence) +{ +struct inode *inode =file_inode (file); +loff_t ret; + +mutex_lock (&inode->i_mutex); + ret =generic_file_llseek (file, offset, whence); +mutex_unlock (&inode->i_mutex); + +return ret; +}const struct file_operations sysfs_dir_operations = { .read = generic_read_dir, .readdir = sysfs_readdir, .release = sysfs_dir_release, - .llseek = generic_file_llseek, + .llseek = sysfs_dir_llseek, };
Patches currently in stable-queue which might be from [email protected] are
queue-3.4/bluetooth-add-support-for-dell.patch queue-3.4/sysfs-handle-failure-path-correctly-for-readdir.patch queue-3.4/bluetooth-add-support-for-dell_2.patch queue-3.4/sysfs-fix-race-between-readdir-and-lseek.patch