From: Maneesh Soni <maneesh@in.ibm.com>
To: viro@parcelfarce.linux.theplanet.co.uk
Cc: LKML <linux-kernel@vger.kernel.org>,
Patrick Mochel <mochel@osdl.org>, Andrew Morton <akpm@osdl.org>,
Dipankar Sarma <dipankar@in.ibm.com>
Subject: Re: [PATCH] sysfs_remove_dir Vs dcache_readdir race fix
Date: Thu, 20 Nov 2003 15:55:25 +0530 [thread overview]
Message-ID: <20031120102525.GD1367@in.ibm.com> (raw)
In-Reply-To: <20031120055655.GB1724@in.ibm.com>
On Thu, Nov 20, 2003 at 11:26:55AM +0530, Maneesh Soni wrote:
> On Thu, Nov 20, 2003 at 05:49:57AM +0000, viro@parcelfarce.linux.theplanet.co.uk wrote:
> > On Thu, Nov 20, 2003 at 11:17:07AM +0530, Maneesh Soni wrote:
> > > Hi,
> > >
> > > sysfs_remove_dir modifies d_subdirs list which results in inconsistency
> > > when there is concurrent dcache_readdir is going on. I think there
> > > is no need for sysfs_remove_dir to modify d_subdirs list and removal
> > > of dentries from d_child list is taken care in the final dput().
> >
> > WTF?
> >
> > All instances of ->readdir() are protected by ->i_sem on parent. So
> > are all operations in sysfs_remove_dir().
> >
> > Have you actually observed any race there?
>
> Yes.. if you run the mentioned two loops on an SMP box, you will find that
> dcache_readdir is looping with dcache_lock held up in less than a minute.
> The problem comes when sysfs_remove_dir has done list_del_init on the cursor
> dentry which is being used in dcache_readdir. Please enable pr_debug() also
> in sysfs_remove_dir to see the this happening.
>
> Maneesh
Clarrifying more:
Actually race is not directly between dcache_readdir and sysfs_remove_dir but
it is like this
cpu 0 cpu 1
dcache_dir_open()
--> adds the cursor dentry
sysfs_remove_dir()
--> list_del_init cursor dentry
dcache_readdir()
--> loops forever on inititalized cursor dentry.
Though all these operations happen under parent's i_sem, but it is dropped
between ->open() and ->readdir() as both are different calls.
I think people will also agree that there is no need for sysfs_remove_dir()
to modify d_subdirs list.
Maneesh
--
Maneesh Soni
Linux Technology Center,
IBM Software Lab, Bangalore, India
email: maneesh@in.ibm.com
Phone: 91-80-5044999 Fax: 91-80-5268553
T/L : 9243696
next prev parent reply other threads:[~2003-11-20 10:25 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-20 5:47 [PATCH] sysfs_remove_dir Vs dcache_readdir race fix Maneesh Soni
2003-11-20 5:49 ` viro
2003-11-20 5:56 ` Maneesh Soni
2003-11-20 10:25 ` Maneesh Soni [this message]
2003-11-20 15:17 ` Andrew Morton
2003-11-20 16:40 ` Dipankar Sarma
2003-11-20 18:44 ` viro
2003-11-20 18:43 ` viro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20031120102525.GD1367@in.ibm.com \
--to=maneesh@in.ibm.com \
--cc=akpm@osdl.org \
--cc=dipankar@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mochel@osdl.org \
--cc=viro@parcelfarce.linux.theplanet.co.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.