From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <514A7340.5040409@huawei.com> Date: Thu, 21 Mar 2013 10:41:04 +0800 From: Li Zefan MIME-Version: 1.0 To: Ming Lei CC: Greg Kroah-Hartman , , Subject: Re: [PATCH 1/2] sysfs: fix race between readdir and lseek References: <1363793126-11510-1-git-send-email-ming.lei@canonical.com> <1363793126-11510-2-git-send-email-ming.lei@canonical.com> In-Reply-To: <1363793126-11510-2-git-send-email-ming.lei@canonical.com> Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: On 2013/3/20 23:25, Ming Lei wrote: > 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. > In fact the same race exists between readdir() and read()/write()... > Reported-by: Dave Jones > Tested-by: Sasha Levin > Cc: > Signed-off-by: Ming Lei > --- > fs/sysfs/dir.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-)