From: Ming Lei Date: Wed, 20 Mar 2013 15:25:24 +0000 (+0800) Subject: sysfs: fix race between readdir and lseek X-Git-Tag: v3.2.43~54 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76bfc5ab57137d351a9046a002ee39a220d0e012;p=pandora-kernel.git sysfs: fix race between readdir and lseek 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. Reported-by: Dave Jones Tested-by: Sasha Levin Signed-off-by: Ming Lei Signed-off-by: Greg Kroah-Hartman [bwh: Backported to 3.2: open-code file_inode() which we don't have] Signed-off-by: Ben Hutchings --- Reading git-diff-tree failed