From: "Markus Rechberger" <markus.rechberger@amd.com>
To: "Cornelia Huck" <cornelia.huck@de.ibm.com>
Cc: "Alan Stern" <stern@rowland.harvard.edu>,
"USB development list" <linux-usb-devel@lists.sourceforge.net>,
"Kernel development list" <linux-kernel@vger.kernel.org>
Subject: Re: How should an exit routine wait for release() callbacks?
Date: Fri, 13 Apr 2007 16:15:18 +0200 [thread overview]
Message-ID: <461F9076.4070209@amd.com> (raw)
In-Reply-To: <20070413152453.571e887a@gondolin.boeblingen.de.ibm.com>
Cornelia Huck wrote:
> On Fri, 13 Apr 2007 13:42:04 +0200,
> "Markus Rechberger" <markus.rechberger@amd.com> wrote:
>
>
>> seems like you have the same problem as the dvb framework has/had.
>>
>> http://mcentral.de/hg/~mrec/v4l-dvb-stable
>>
>> The last 3 changesets do the trick to not oops, it will delay the
>> deinitialization of the device till the last user closed the device node.
>>
>
> Probably dumb question (since I'm not at all familiar with the dvb
> code): Isn't that a different race you're solving there? I don't see
> any driver core objects involved (except class devices created by
> class_device_create, which obviously don't have the release function
> problem). This looks more like a race of "we want an object to go
> away, but a user still has a file open" (which would be similar to the
> kobject<->sysfs lifetime rules issues, where work is currently ongoing).
>
>
most dvb usb drivers call the device node unregistration when a device
gets unplugged (when
At this time the filehandle can still be open, the patch on that site
sets a flag that disallows
any further access to the device node (in the DVB framework there are 4
of such nodes)
This can happen any time, so while someone is reading or accessing the
device some structures
might have gone away already and this could cause an oops.
The problem of the DVB framework is file operation related, the last
user calls fops_put on the existing
structure and sets the pointer to NULL before it wakes up the other
function which frees the file operation
structure.
In Alan's case isn't there any users flag available that shows that the
structure is still beeing accessed?
If that would be the case he could set a flag when he enters my_exit
which would disable access to all other
functions by returning an error value at the beginning of the other
functions, the only way out would be
to call my_release for existing users and wake up my_exit when the last
reference to that structure is gone.
Some more information about the whole driver/scenario would be helpful.
Markus
--
| AMD Saxony Limited Liability Company & Co. KG
Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany
System | Register Court Dresden: HRA 4896
Research | General Partner authorized to represent:
Center | AMD Saxony LLC (Wilmington, Delaware, US)
| General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
next prev parent reply other threads:[~2007-04-13 14:06 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-12 21:23 How should an exit routine wait for release() callbacks? Alan Stern
2007-04-13 9:03 ` Cornelia Huck
2007-04-13 11:42 ` Markus Rechberger
2007-04-13 13:24 ` Cornelia Huck
2007-04-13 14:15 ` Markus Rechberger [this message]
2007-04-13 14:27 ` Cornelia Huck
2007-04-13 15:24 ` Alan Stern
2007-04-16 8:53 ` Cornelia Huck
2007-04-16 14:43 ` Alan Stern
2007-04-16 14:51 ` [linux-usb-devel] " Robert Marquardt
2007-04-16 15:05 ` Cornelia Huck
2007-04-16 22:12 ` [linux-usb-devel] " Greg KH
2007-04-17 7:26 ` Cornelia Huck
2007-04-17 15:59 ` Alan Stern
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=461F9076.4070209@amd.com \
--to=markus.rechberger@amd.com \
--cc=cornelia.huck@de.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb-devel@lists.sourceforge.net \
--cc=stern@rowland.harvard.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