From: Kees Cook <keescook@chromium.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Christophe de Dinechin <dinechin@redhat.com>,
Ingo Molnar <mingo@redhat.com>,
Juri Lelli <juri.lelli@redhat.com>,
Vincent Guittot <vincent.guittot@linaro.org>,
Dietmar Eggemann <dietmar.eggemann@arm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
Daniel Bristot de Oliveira <bristot@redhat.com>,
linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH v3] sched/core: Address classes via __begin_sched_classes
Date: Mon, 16 May 2022 20:33:25 -0700 [thread overview]
Message-ID: <202205162032.5161269A45@keescook> (raw)
In-Reply-To: <20220517030024.3388355-1-keescook@chromium.org>
On Mon, May 16, 2022 at 08:00:23PM -0700, Kees Cook wrote:
> GCC 12 is very sensitive about array checking, and views all negative
> array accesses as unsafe (a not unreasonable position). Redefine
> sched_class_highest in terms of its location from __begin_sched_classes,
> and redefine sched_class_lowest to the actual lowest sched class instead
> of one lower. This also means the for_class_range() must be redefined to
> be inclusive, which means its 1 caller must be adjusted to have its
> "lowest" argument bumped up one position. Silences this warning:
>
> In file included from kernel/sched/core.c:81:
> kernel/sched/core.c: In function ‘set_rq_online.part.0’:
> kernel/sched/sched.h:2197:52: error: array subscript -1 is outside array bounds of ‘struct sched_class[44343134792571037]’
> [-Werror=array-bounds]
> 2197 | #define sched_class_lowest (__begin_sched_classes - 1)
> | ^
> kernel/sched/sched.h:2200:41: note: in definition of macro ‘for_class_range’
> 2200 | for (class = (_from); class != (_to); class--)
> | ^~~
> kernel/sched/sched.h:2203:53: note: in expansion of macro ‘sched_class_lowest’
> 2203 |for_class_range(class, sched_class_highest, sched_class_lowest)
> | ^~~~~~~~~~~~~~~~~~
> kernel/sched/core.c:9115:17: note: in expansion of macro ‘for_each_class’
> 9115 | for_each_class(class) {
> | ^~~~~~~~~~~~~~
> kernel/sched/sched.h:2193:27: note: at offset -208 into object ‘__begin_sched_classes’ of size [0, 9223372036854775807]
> 2193 | extern struct sched_class __begin_sched_classes[];
> | ^~~~~~~~~~~~~~~~~~~~~
>
> The introduce and use of sched_class_higher() could just be a bare "+ 1",
> but this code's backwards walking and non-inclusive for loop was weird
> enough, it seemed back to explicitly describe the manipulation
> happening.
I just need to start today over. This should read:
The introduction and use of sched_class_higher() could just be a bare
"+ 1", but this code's backwards-walking and non-inclusive for loop was
weird enough, it seemed best to explicitly describe the manipulation
happening.
--
Kees Cook
next prev parent reply other threads:[~2022-05-17 3:33 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-17 3:00 [PATCH v3] sched/core: Address classes via __begin_sched_classes Kees Cook
2022-05-17 3:33 ` Kees Cook [this message]
2022-05-17 11:46 ` Peter Zijlstra
2022-05-17 17:35 ` Kees Cook
2022-05-17 22:22 ` Peter Zijlstra
2022-05-19 21:57 ` [tip: sched/core] sched: Reverse sched_class layout tip-bot2 for Peter Zijlstra
2022-05-17 6:42 ` [PATCH v3] sched/core: Address classes via __begin_sched_classes Peter Zijlstra
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=202205162032.5161269A45@keescook \
--to=keescook@chromium.org \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=dinechin@redhat.com \
--cc=juri.lelli@redhat.com \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=vincent.guittot@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.