From: Roland Dreier <rdreier@cisco.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jeff Garzik <jeff@garzik.org>,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
linux-ide@vger.kernel.org, chas@cmf.nrl.navy.mil,
rolandd@cisco.com, dwmw2@infradead.org, gregkh@suse.de
Subject: Re: [git patches 1/2] warnings: attack valid cases spotted by warnings
Date: Tue, 17 Jul 2007 20:09:27 -0700 [thread overview]
Message-ID: <adaejj6o1aw.fsf@cisco.com> (raw)
In-Reply-To: <alpine.LFD.0.999.0707171954230.27353@woody.linux-foundation.org> (Linus Torvalds's message of "Tue, 17 Jul 2007 19:56:55 -0700 (PDT)")
> > So setting a variable to something meaningless (guaranteeing that a
> > garbage value is used in case of a bug) just to shut up a warning makes
> > no sense -- it's no safer than leaving the code as is.
>
> Wrong.
>
> It's safer for two reasons:
> - now everybody will see the *same* behaviour
> - the "meaningless value" is guaranteed to not be a security leak
>
> but the whole "shut up bogus warnings" is the best reason.
>
> So it *is* safer than leaving the code as-is.
OK, fair enough. What I said wasn't quite right, but in my case I
think neither of your reasons really applies, since the uninitialized
variable would be written into some hardware control block, so the
effect would probably still be random even if the value is the same
and the information leak doesn't really matter.
Anyway, I think that in this case it's not too hard to show that the
variable really can't be used uninitialized, so I prefer the smaller
generated code from uninitialized_var() (plus a comment explaining why
that's safe).
> Of course, usually the best approach is to rewrite the code to be simpler,
> so that even gcc sees that something is obviously initialized. Sadly,
> people seldom do the right thing, and sometimes gcc just blows incredibly
> hard.
In this case the code is basically
u32 x;
for (n = 0; cond; ++n) {
...
if (!n)
x = something;
...
}
if (n) {
...
use(x);
...
}
and gcc still warns...
- R.
next prev parent reply other threads:[~2007-07-18 3:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-17 21:42 [git patches 1/2] warnings: attack valid cases spotted by warnings Jeff Garzik
2007-07-17 21:49 ` [git patches 2/2] warnings: use uninitialized_var() Jeff Garzik
2007-07-18 11:30 ` Adrian Bunk
2007-07-17 21:53 ` [git patches 1/2] warnings: attack valid cases spotted by warnings Roland Dreier
2007-07-17 22:10 ` Jeff Garzik
2007-07-17 22:17 ` Jeff Garzik
2007-07-18 2:35 ` Roland Dreier
2007-07-18 2:46 ` Roland Dreier
2007-07-18 4:00 ` Linus Torvalds
2007-07-18 4:18 ` Roland Dreier
2007-07-18 5:12 ` Linus Torvalds
2007-07-18 17:37 ` Roland Dreier
2007-07-18 18:02 ` Linus Torvalds
2007-07-18 2:56 ` Linus Torvalds
2007-07-18 3:09 ` Roland Dreier [this message]
2007-07-18 3:29 ` Jeff Garzik
2007-07-17 22:19 ` Andrew Morton
2007-07-17 22:25 ` Linus Torvalds
2007-07-18 2:46 ` Greg KH
2007-07-18 20:03 ` Jeff Garzik
2007-07-18 22:07 ` 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=adaejj6o1aw.fsf@cisco.com \
--to=rdreier@cisco.com \
--cc=akpm@linux-foundation.org \
--cc=chas@cmf.nrl.navy.mil \
--cc=dwmw2@infradead.org \
--cc=gregkh@suse.de \
--cc=jeff@garzik.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rolandd@cisco.com \
--cc=torvalds@linux-foundation.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;
as well as URLs for NNTP newsgroup(s).