From: Andrew Morton <akpm@linux-foundation.org>
To: Oliver Neukum <oliver@neukum.org>
Cc: david-b@pacbell.net, lihong.hi@gmail.com,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] usb: use memdup_user()
Date: Wed, 6 May 2009 11:31:17 -0700 [thread overview]
Message-ID: <20090506113117.ba254f75.akpm@linux-foundation.org> (raw)
In-Reply-To: <200905061534.53521.oliver@neukum.org>
On Wed, 6 May 2009 15:34:52 +0200
Oliver Neukum <oliver@neukum.org> wrote:
> Am Dienstag, 5. Mai 2009 19:22:53 schrieb Andrew Morton:
> > On Tue, 5 May 2009 12:44:01 +0200 Oliver Neukum <oliver@neukum.org> wrote:
>
> > > USB drivers are interface level yet some functions, reset and power
> > > management, are on a device level. As it is unpredictable whether
> > > a driver will share a device with a storage driver, all USB drivers as
> > > far as these functions are concerned must be considered block device
> > > drivers. That's the reason GFP_NOIO is so prevalent in USB.
> >
> > There must be some particular action which flips the thread of control
> > from one state to the other. eg, taking of a lock.
>
> Basically assigning an interface to the storage or ub driver.
That's hardly enough information for anyone to understand what you
mean :(
Oh well, doesn't matter.
> > > > I wonder how hard it would be to add runtime debugging checks? If
> > >
> > > I'd prefer compile time checks. Ideally we'd annotate a function with an
> > > attribute making the compiler barf if copy_to/from_user or an
> > > inappropriate kmalloc is used. It can't be perfect due to function
> > > pointers, but it would be a good start.
> >
> > I don't think that would have enough coverage - bugs in this area tend
> > to come from calling some function which looks innocent, but which
> > calls some function which calls some function which calls some function
> > which uses GFP_KERNEL.
> >
> > And then there's stuff like "usb takes a mutex which is also taken by
> > some other thread which does a GFP_KERNEL allocation while holding that
> > mutex".
>
> Yes, but to catch that you'd have to teach lockdep about those functions
> whose locks are dangerous to share with respect to memory allocation.
> Is there another way to do that besides labelling dangerous methods?
Adding lockdep annotation to the locks, I guess. Probably a new kind of
annotation.
next prev parent reply other threads:[~2009-05-06 18:35 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-03 16:00 [PATCH] usb: use memdup_user() Li Hong
2009-05-03 16:28 ` Oliver Neukum
2009-05-03 17:09 ` Oliver Neukum
2009-05-04 3:38 ` Li Hong
2009-05-04 6:54 ` Oliver Neukum
2009-05-04 7:02 ` David Brownell
2009-05-04 7:41 ` Pekka Enberg
2009-05-04 14:53 ` Greg KH
2009-05-04 15:13 ` Li Hong
2009-05-05 8:50 ` Oliver Neukum
2009-05-04 14:01 ` Oliver Neukum
2009-05-05 6:11 ` Andrew Morton
2009-05-05 10:44 ` Oliver Neukum
2009-05-05 17:22 ` Andrew Morton
2009-05-06 13:34 ` Oliver Neukum
2009-05-06 18:31 ` Andrew Morton [this message]
2009-05-06 18:44 ` Oliver Neukum
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=20090506113117.ba254f75.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=david-b@pacbell.net \
--cc=lihong.hi@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=oliver@neukum.org \
/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