From: Linus Torvalds <torvalds@osdl.org>
To: "Robert T. Johnson" <rtjohnso@eecs.berkeley.edu>
Cc: Al Viro <viro@math.psu.edu>, Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: Finding user/kernel pointer bugs [no html]
Date: Thu, 10 Jun 2004 07:46:40 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.58.0406100735530.2050@ppc970.osdl.org> (raw)
In-Reply-To: <1086842898.32053.380.camel@dooby.cs.berkeley.edu>
On Wed, 9 Jun 2004, Robert T. Johnson wrote:
>
> QUESTION: Do you find it's difficult to figure out which fields of
> structures should be declared __user?
It's _usually_ trivial, by just looking at the warnings.
Not always, though. We don't have a "taint" attribute (I've been thinking
about it, but I don't feel the pain has been worth it yet), so if you do
load a structure from user space (properly, with copy_from_user()) and
then use a non-annotated part of that as a pointer and dereference it
directly, sparse won't warn, of course.
However, that requires that _every_ single user of that attribute member
mis-uses the pointer (ie that "get_user()" never sees that pointer at
all)). So that case is fairly unlikely, although it can (and probably
does) happen for the unusual stuff.
The much harder issue is structures that soemtimes contain user pointers,
and sometime contain kernel pointers. Those sparse can't handle at all,
since sparse does purely local and static type-checking. It will complain
about one or the other.
The only way to fix the second case is to split the structure up - which
is usually a good idea _anyway_, but which can sometimes be pretty
painful. Al has done some of them. The really painful one is "struct
iovec", which seems to be used in this capacity a fair amount.
> If a structure pointer is __user, but it has some pointer fields that
> aren't declared __user, there's a good chance that there's a missing
> annotation or something.
Yes. That's likely a good heuristic.
Linus
next prev parent reply other threads:[~2004-06-10 14:48 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-10 3:31 Robert T. Johnson
2004-06-10 4:10 ` Linus Torvalds
2004-06-10 4:48 ` Robert T. Johnson
2004-06-10 14:46 ` Linus Torvalds [this message]
2004-06-10 16:57 ` viro
2004-06-10 15:07 ` Timothy Miller
2004-06-10 15:04 ` Linus Torvalds
2004-06-10 15:26 ` Timothy Miller
2004-06-10 4:49 ` viro
2004-06-10 5:20 ` Robert T. Johnson
2004-06-10 16:58 ` Greg KH
2004-06-10 17:27 ` David Brownell
2004-06-10 17:35 ` Greg KH
2004-06-10 17:54 ` Thomas Sailer
2004-06-10 18:34 ` Greg KH
2004-06-10 18:45 ` viro
2004-06-10 18:54 ` Greg KH
2004-06-10 19:10 ` Greg KH
2004-06-10 19:14 ` viro
2004-06-10 19:32 ` Greg KH
2004-06-10 19:38 ` viro
2004-06-10 20:28 ` Sam Ravnborg
2004-06-10 20:48 ` Randy.Dunlap
2004-06-11 17:21 ` Jean Delvare
2004-06-11 17:59 ` Greg KH
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=Pine.LNX.4.58.0406100735530.2050@ppc970.osdl.org \
--to=torvalds@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rtjohnso@eecs.berkeley.edu \
--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
all inboxes | Powered by JetHome®