From: Maneesh Soni <maneesh@in.ibm.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Andrew Morton <akpm@osdl.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
greg@kroah.com, torvalds@osdl.org, david-b@pacbell.net,
viro@math.psu.edu, linux-usb-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Subject: Re: [linux-usb-devel] [PATCH] back out sysfs reference count change
Date: Thu, 1 Apr 2004 10:47:40 +0530 [thread overview]
Message-ID: <20040401051740.GA1291@in.ibm.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0403311001440.1752-100000@ida.rowland.org>
On Wed, Mar 31, 2004 at 10:11:37AM -0500, Alan Stern wrote:
> On Wed, 31 Mar 2004, Maneesh Soni wrote:
>
> > For convenience I will explain the race here..
> >
> > cpu 0 cpu 1
> > kobject_unregister() sysfs_open_file()
> > kobject_del() check_perm()
> > sysfs_remove_dir() :
> > (dentry remains alive due to ref. taken :
> > on the way to sysfs_open_file) :
> > kobject_put() :
> > kobject_cleanup() kobject_get(->d_fsdata)
> >
> > cpu 1 could end up referring to a freed kobject through dentry->d_fsdata or
> > starts spitting Badness in kobject_get at lib/kobject.c:429. For triggering
> > this race try running these two loops simultaneously on SMP
> >
> > # while true; do insmod drivers/net/dummy.ko; rmmod dummy; done
> > # while true; do find /sys/class/net | xargs cat; done
> >
> > Probably it can be solved by making sure that when sysfs file is
> > opened/read/written some _race_ free check is done and fail if kobject if gone.
> >
> > Maneesh
>
> Here's a suggestion. At the start of check_perm() grab the dentry
> semaphore, then check whether d_fsdata is NULL, if it isn't then do the
> kobject_get(), then unlock the semaphore.
>
I have tried this with no luck. I still get
(Badness in kobject_get at lib/kobject.c:42) which means it is not correct fix.
I am out of any more ideas except something like making sysfs single threaded
or requesting people to try my sysfs backing store patch set. It does not
suffer from the negative dentries problem as it does not create any negative
dentries. I have to re-diff the patch set again to take recent changes into
account.
Maneesh
--
Maneesh Soni
Linux Technology Center,
IBM Software Lab, Bangalore, India
email: maneesh@in.ibm.com
Phone: 91-80-25044999 Fax: 91-80-25268553
T/L : 9243696
next prev parent reply other threads:[~2004-04-01 5:13 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20040328063711.GA6387@kroah.com>
[not found] ` <Pine.LNX.4.44L0.0403281057100.17150-100000@netrider.rowland.org>
[not found] ` <20040328123857.55f04527.akpm@osdl.org>
[not found] ` <20040329210219.GA16735@kroah.com>
[not found] ` <20040329132551.23e12144.akpm@osdl.org>
2004-03-29 23:16 ` Unregistering interfaces Greg KH
2004-03-29 23:31 ` Andrew Morton
2004-03-30 0:01 ` Greg KH
2004-03-30 7:38 ` Maneesh Soni
2004-03-30 15:38 ` Alan Stern
2004-03-30 5:51 ` Maneesh Soni
2004-03-30 23:01 ` Greg KH
2004-03-30 23:16 ` Andrew Morton
2004-03-30 23:30 ` Greg KH
2004-03-30 23:57 ` Greg KH
2004-03-30 23:56 ` Alan Stern
2004-03-31 0:08 ` David Brownell
2004-03-31 0:34 ` Greg KH
2004-03-31 15:32 ` Alan Stern
2004-03-31 0:33 ` Greg KH
2004-03-31 15:54 ` Alan Stern
2004-04-01 7:24 ` Greg KH
2004-03-30 23:55 ` [PATCH] back out sysfs reference count change Greg KH
2004-03-31 2:11 ` [linux-usb-devel] " Benjamin Herrenschmidt
2004-03-31 2:19 ` Andrew Morton
2004-03-31 9:26 ` Maneesh Soni
2004-03-31 15:11 ` Alan Stern
2004-04-01 5:17 ` Maneesh Soni [this message]
2004-04-01 7:15 ` Greg KH
2004-04-01 14:56 ` Alan Stern
2004-04-02 4:38 ` Maneesh Soni
2004-04-02 21:41 ` Alan Stern
2004-04-06 10:13 ` Maneesh Soni
2004-04-06 17:03 ` Alan Stern
2004-04-14 13:20 ` Maneesh Soni
2004-04-15 21:36 ` Greg KH
2004-04-15 22:10 ` Andrew Morton
2004-04-16 8:42 ` Maneesh Soni
2004-03-31 22:18 ` Greg KH
2004-04-01 1:56 ` Benjamin Herrenschmidt
2004-04-01 3:48 ` Alan Stern
2004-04-01 6:55 ` Greg KH
2004-04-01 7:13 ` Benjamin Herrenschmidt
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=20040401051740.GA1291@in.ibm.com \
--to=maneesh@in.ibm.com \
--cc=akpm@osdl.org \
--cc=benh@kernel.crashing.org \
--cc=david-b@pacbell.net \
--cc=greg@kroah.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb-devel@lists.sourceforge.net \
--cc=stern@rowland.harvard.edu \
--cc=torvalds@osdl.org \
--cc=viro@math.psu.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox