From: Peter Zijlstra <peterz@infradead.org>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Dan Carpenter <dan.carpenter@oracle.com>,
linux-kernel@vger.kernel.org,
"Gustavo A. R. Silva" <gustavo@embeddedor.com>,
Mark Rutland <mark.rutland@arm.com>
Subject: Re: Smatch check for Spectre stuff
Date: Mon, 11 Jun 2018 11:28:10 +0200 [thread overview]
Message-ID: <20180611092810.GM12217@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <20180608161219.q3lwvlydvs4l2gxa@treble>
On Fri, Jun 08, 2018 at 11:12:19AM -0500, Josh Poimboeuf wrote:
> 1) I've noticed a common pattern for many of the false positives.
> Smatch doesn't seem to detect when the code masks off the array index
> to ensure that it's safe.
>
> For example:
>
> > ./include/linux/mmzone.h:1161 __nr_to_section() warn: potential spectre issue 'mem_section[(nr / (((1) << 12) / 32))]'
>
> 1153 static inline struct mem_section *__nr_to_section(unsigned long nr)
> 1154 {
> 1155 #ifdef CONFIG_SPARSEMEM_EXTREME
> 1156 if (!mem_section)
> 1157 return NULL;
> 1158 #endif
> 1159 if (!mem_section[SECTION_NR_TO_ROOT(nr)])
> 1160 return NULL;
> 1161 return &mem_section[SECTION_NR_TO_ROOT(nr)][nr & SECTION_ROOT_MASK];
> 1162 }
>
> In the 2-D array access, it seems to be complaining about the '[nr &
> SECTION_ROOT_MASK]' reference. But that appears to be safe because
> all the unsafe bits are masked off.
>
> It would be great if Smatch could detect that situation if possible.
Also see:
https://lkml.kernel.org/r/20180425131958.hhapvc3b2i3b4pgy@lakrids.cambridge.arm.com
That exact pattern isn't (immediately) applicable here, but it makes the
general pattern of masking very hard to do.
next prev parent reply other threads:[~2018-06-11 9:28 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-19 5:15 Dan Carpenter
2018-04-19 21:39 ` Gustavo A. R. Silva
2018-04-20 12:00 ` Peter Zijlstra
2018-04-23 12:31 ` Gustavo A. R. Silva
2018-04-23 12:45 ` Peter Zijlstra
2018-04-23 13:08 ` Gustavo A. R. Silva
2018-04-23 13:48 ` Dan Williams
2018-04-20 12:25 ` Thomas Gleixner
2018-04-20 17:21 ` Oleg Nesterov
2018-04-20 12:47 ` Mark Rutland
2018-04-23 12:53 ` Dan Carpenter
2018-04-23 13:22 ` Mark Rutland
2018-04-23 13:26 ` Dan Carpenter
2018-04-23 17:11 ` Davidlohr Bueso
2018-04-25 13:19 ` Mark Rutland
2018-04-25 14:48 ` Alan Cox
2018-04-25 15:03 ` Mark Rutland
2018-06-08 16:12 ` Josh Poimboeuf
2018-06-11 9:28 ` Peter Zijlstra [this message]
2018-06-13 13:10 ` Dan Carpenter
2018-06-13 13:58 ` Dan Carpenter
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=20180611092810.GM12217@hirez.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=dan.carpenter@oracle.com \
--cc=gustavo@embeddedor.com \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
/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®