Commit Graph

1527 Commits

Author SHA1 Message Date
Greg Kroah-Hartman b850307b27 Linux 4.14.184 2020-06-11 09:23:02 +02:00
Greg Kroah-Hartman c6db52a887 Linux 4.14.183 2020-06-03 08:18:13 +02:00
Greg Kroah-Hartman 4f68020fef Linux 4.14.182 2020-05-27 16:43:13 +02:00
Greg Kroah-Hartman a41ba30d9d Linux 4.14.181 2020-05-20 08:17:19 +02:00
Sergei Trofimovich b7d6e8c2f7 Makefile: disallow data races on gcc-10 as well
commit b1112139a1 upstream.

gcc-10 will rename --param=allow-store-data-races=0
to -fno-allow-store-data-races.

The flag change happened at https://gcc.gnu.org/PR92046.

Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Cc: Thomas Backlund <tmb@mageia.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-20 08:17:19 +02:00
Linus Torvalds eaeb85d649 gcc-10: disable 'restrict' warning for now
commit adc7192096 upstream.

gcc-10 now warns about passing aliasing pointers to functions that take
restricted pointers.

That's actually a great warning, and if we ever start using 'restrict'
in the kernel, it might be quite useful.  But right now we don't, and it
turns out that the only thing this warns about is an idiom where we have
declared a few functions to be "printf-like" (which seems to make gcc
pick up the restricted pointer thing), and then we print to the same
buffer that we also use as an input.

And people do that as an odd concatenation pattern, with code like this:

    #define sysfs_show_gen_prop(buffer, fmt, ...) \
        snprintf(buffer, PAGE_SIZE, "%s"fmt, buffer, __VA_ARGS__)

where we have 'buffer' as both the destination of the final result, and
as the initial argument.

Yes, it's a bit questionable.  And outside of the kernel, people do have
standard declarations like

    int snprintf( char *restrict buffer, size_t bufsz,
                  const char *restrict format, ... );

where that output buffer is marked as a restrict pointer that cannot
alias with any other arguments.

But in the context of the kernel, that 'use snprintf() to concatenate to
the end result' does work, and the pattern shows up in multiple places.
And we have not marked our own version of snprintf() as taking restrict
pointers, so the warning is incorrect for now, and gcc picks it up on
its own.

If we do start using 'restrict' in the kernel (and it might be a good
idea if people find places where it matters), we'll need to figure out
how to avoid this issue for snprintf and friends.  But in the meantime,
this warning is not useful.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-20 08:17:11 +02:00
Linus Torvalds d0e84b91f1 gcc-10: disable 'stringop-overflow' warning for now
commit 5a76021c2e upstream.

This is the final array bounds warning removal for gcc-10 for now.

Again, the warning is good, and we should re-enable all these warnings
when we have converted all the legacy array declaration cases to
flexible arrays. But in the meantime, it's just noise.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-20 08:17:11 +02:00
Linus Torvalds 7c29131adf gcc-10: disable 'array-bounds' warning for now
commit 44720996e2 upstream.

This is another fine warning, related to the 'zero-length-bounds' one,
but hitting the same historical code in the kernel.

Because C didn't historically support flexible array members, we have
code that instead uses a one-sized array, the same way we have cases of
zero-sized arrays.

The one-sized arrays come from either not wanting to use the gcc
zero-sized array extension, or from a slight convenience-feature, where
particularly for strings, the size of the structure now includes the
allocation for the final NUL character.

So with a "char name[1];" at the end of a structure, you can do things
like

       v = my_malloc(sizeof(struct vendor) + strlen(name));

and avoid the "+1" for the terminator.

Yes, the modern way to do that is with a flexible array, and using
'offsetof()' instead of 'sizeof()', and adding the "+1" by hand.  That
also technically gets the size "more correct" in that it avoids any
alignment (and thus padding) issues, but this is another long-term
cleanup thing that will not happen for 5.7.

So disable the warning for now, even though it's potentially quite
useful.  Having a slew of warnings that then hide more urgent new issues
is not an improvement.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-20 08:17:10 +02:00
Linus Torvalds 1a99bcaa09 gcc-10: disable 'zero-length-bounds' warning for now
commit 5c45de21a2 upstream.

This is a fine warning, but we still have a number of zero-length arrays
in the kernel that come from the traditional gcc extension.  Yes, they
are getting converted to flexible arrays, but in the meantime the gcc-10
warning about zero-length bounds is very verbose, and is hiding other
issues.

I missed one actual build failure because it was hidden among hundreds
of lines of warning.  Thankfully I caught it on the second go before
pushing things out, but it convinced me that I really need to disable
the new warnings for now.

We'll hopefully be all done with our conversion to flexible arrays in
the not too distant future, and we can then re-enable this warning.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-20 08:17:10 +02:00
Linus Torvalds 4cdd5c0c6b Stop the ad-hoc games with -Wno-maybe-initialized
commit 78a5255ffb upstream.

We have some rather random rules about when we accept the
"maybe-initialized" warnings, and when we don't.

For example, we consider it unreliable for gcc versions < 4.9, but also
if -O3 is enabled, or if optimizing for size.  And then various kernel
config options disabled it, because they know that they trigger that
warning by confusing gcc sufficiently (ie PROFILE_ALL_BRANCHES).

And now gcc-10 seems to be introducing a lot of those warnings too, so
it falls under the same heading as 4.9 did.

At the same time, we have a very straightforward way to _enable_ that
warning when wanted: use "W=2" to enable more warnings.

So stop playing these ad-hoc games, and just disable that warning by
default, with the known and straight-forward "if you want to work on the
extra compiler warnings, use W=123".

Would it be great to have code that is always so obvious that it never
confuses the compiler whether a variable is used initialized or not?
Yes, it would.  In a perfect world, the compilers would be smarter, and
our source code would be simpler.

That's currently not the world we live in, though.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-20 08:17:10 +02:00
Masahiro Yamada 859ea9726d kbuild: compute false-positive -Wmaybe-uninitialized cases in Kconfig
commit b303c6df80 upstream.

Since -Wmaybe-uninitialized was introduced by GCC 4.7, we have patched
various false positives:

 - commit e74fc973b6 ("Turn off -Wmaybe-uninitialized when building
   with -Os") turned off this option for -Os.

 - commit 815eb71e71 ("Kbuild: disable 'maybe-uninitialized' warning
   for CONFIG_PROFILE_ALL_BRANCHES") turned off this option for
   CONFIG_PROFILE_ALL_BRANCHES

 - commit a76bcf557e ("Kbuild: enable -Wmaybe-uninitialized warning
   for "make W=1"") turned off this option for GCC < 4.9
   Arnd provided more explanation in https://lkml.org/lkml/2017/3/14/903

I think this looks better by shifting the logic from Makefile to Kconfig.

Link: https://github.com/ClangBuiltLinux/linux/issues/350
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-05-20 08:17:10 +02:00
Greg Kroah-Hartman ab9dfda232 Linux 4.14.180 2020-05-10 10:29:03 +02:00
Greg Kroah-Hartman d71f695ce7 Linux 4.14.179 2020-05-05 19:15:53 +02:00
Greg Kroah-Hartman 773e2b1cd5 Linux 4.14.178 2020-05-02 17:24:47 +02:00
Greg Kroah-Hartman 050272a042 Linux 4.14.177 2020-04-24 08:01:25 +02:00
Greg Kroah-Hartman c10b57a567 Linux 4.14.176 2020-04-13 10:34:39 +02:00
Greg Kroah-Hartman 4520f06b03 Linux 4.14.175 2020-04-02 16:34:38 +02:00
Greg Kroah-Hartman 01364dad1d Linux 4.14.174 2020-03-20 10:54:27 +01:00
Greg Kroah-Hartman 12cd844a39 Linux 4.14.173 2020-03-11 18:03:09 +01:00
Greg Kroah-Hartman 78d697fc93 Linux 4.14.172 2020-02-28 16:36:17 +01:00
Greg Kroah-Hartman 98db2bf27b Linux 4.14.171 2020-02-14 16:32:24 -05:00
Greg Kroah-Hartman e0f8b8a65a Linux 4.14.170 2020-02-05 14:18:29 +00:00
Greg Kroah-Hartman 9fa690a2a0 Linux 4.14.169 2020-01-29 15:02:39 +01:00
Greg Kroah-Hartman 9a95f25269 Linux 4.14.168 2020-01-27 14:46:54 +01:00
Masahiro Yamada f3691b5e7d kbuild: mark prepare0 as PHONY to fix external module build
[ Upstream commit e00d888048 ]

Commit c3ff2a5193 ("powerpc/32: add stack protector support")
caused kernel panic on PowerPC when an external module is used with
CONFIG_STACKPROTECTOR because the 'prepare' target was not executed
for the external module build.

Commit e07db28eea ("kbuild: fix single target build for external
module") turned it into a build error because the 'prepare' target is
now executed but the 'prepare0' target is missing for the external
module build.

External module on arm/arm64 with CONFIG_STACKPROTECTOR_PER_TASK is
also broken in the same way.

Move 'PHONY += prepare0' to the common place. GNU Make is fine with
missing rule for phony targets. I also removed the comment which is
wrong irrespective of this commit.

I minimize the change so it can be easily backported to 4.20.x

To fix v4.20, please backport e07db28eea ("kbuild: fix single target
build for external module"), and then this commit.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=201891
Fixes: e07db28eea ("kbuild: fix single target build for external module")
Fixes: c3ff2a5193 ("powerpc/32: add stack protector support")
Fixes: 189af46571 ("ARM: smp: add support for per-task stack canaries")
Fixes: 0a1213fa74 ("arm64: enable per-task stack canaries")
Cc: linux-stable <stable@vger.kernel.org> # v4.20
Reported-by: Samuel Holland <samuel@sholland.org>
Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-01-27 14:46:13 +01:00
Greg Kroah-Hartman 8bac50406c Linux 4.14.167 2020-01-23 08:20:37 +01:00
Greg Kroah-Hartman c1141b3aab Linux 4.14.166 2020-01-17 19:45:55 +01:00
Greg Kroah-Hartman c04fc6fa5c Linux 4.14.165 2020-01-14 20:05:49 +01:00
Greg Kroah-Hartman 6d0c334a40 Linux 4.14.164 2020-01-12 12:12:09 +01:00
Greg Kroah-Hartman b0cdffaa54 Linux 4.14.163 2020-01-09 10:18:00 +01:00
Greg Kroah-Hartman 84f5ad4681 Linux 4.14.162 2020-01-04 14:00:23 +01:00
Greg Kroah-Hartman 4c5bf01e16 Linux 4.14.161 2019-12-31 12:38:09 +01:00
Greg Kroah-Hartman e1f7d50ae3 Linux 4.14.160 2019-12-21 10:47:56 +01:00
Greg Kroah-Hartman bfb9e5c030 Linux 4.14.159 2019-12-17 20:40:05 +01:00
Masahiro Yamada a87bd630bc kbuild: fix single target build for external module
[ Upstream commit e07db28eea ]

Building a single target in an external module fails due to missing
.tmp_versions directory.

For example,

  $ make -C /lib/modules/$(uname -r)/build M=$PWD foo.o

will fail in the following way:

  CC [M]  /home/masahiro/foo/foo.o
/bin/sh: 1: cannot create /home/masahiro/foo/.tmp_versions/foo.mod: Directory nonexistent

This is because $(cmd_crmodverdir) is executed only before building
/, %/, %.ko single targets of external modules. Create .tmp_versions
in the 'prepare' target.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-17 20:38:31 +01:00
Greg Kroah-Hartman a844dc4c54 Linux 4.14.158 2019-12-05 15:38:36 +01:00
Greg Kroah-Hartman fbc5fe7a54 Linux 4.14.157 2019-12-01 09:14:37 +01:00
Greg Kroah-Hartman 43598c571e Linux 4.14.156 2019-11-24 08:23:35 +01:00
Greg Kroah-Hartman f56f3d0e65 Linux 4.14.155 2019-11-20 18:00:54 +01:00
Greg Kroah-Hartman 775d01b65b Linux 4.14.154 2019-11-12 19:19:08 +01:00
Greg Kroah-Hartman 4762bcd451 Linux 4.14.153 2019-11-10 11:25:43 +01:00
Seth Forshee 2103cc67db kbuild: add -fcf-protection=none when using retpoline flags
[ Upstream commit 29be86d7f9 ]

The gcc -fcf-protection=branch option is not compatible with
-mindirect-branch=thunk-extern. The latter is used when
CONFIG_RETPOLINE is selected, and this will fail to build with
a gcc which has -fcf-protection=branch enabled by default. Adding
-fcf-protection=none when building with retpoline enabled
prevents such build failures.

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-11-10 11:25:39 +01:00
Masahiro Yamada b125188db9 kbuild: use -fmacro-prefix-map to make __FILE__ a relative path
[ Upstream commit a73619a845 ]

The __FILE__ macro is used everywhere in the kernel to locate the file
printing the log message, such as WARN_ON(), etc.  If the kernel is
built out of tree, this can be a long absolute path, like this:

  WARNING: CPU: 1 PID: 1 at /path/to/build/directory/arch/arm64/kernel/foo.c:...

This is because Kbuild runs in the objtree instead of the srctree,
then __FILE__ is expanded to a file path prefixed with $(srctree)/.

Commit 9da0763bdd ("kbuild: Use relative path when building in a
subdir of the source tree") improved this to some extent; $(srctree)
becomes ".." if the objtree is a child of the srctree.

For other cases of out-of-tree build, __FILE__ is still the absolute
path.  It also means the kernel image depends on where it was built.

A brand-new option from GCC, -fmacro-prefix-map, solves this problem.
If your compiler supports it, __FILE__ is the relative path from the
srctree regardless of O= option.  This provides more readable log and
more reproducible builds.

Please note __FILE__ is always an absolute path for external modules.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-11-10 11:25:38 +01:00
Greg Kroah-Hartman c9fda4f224 Linux 4.14.152 2019-11-06 12:43:42 +01:00
Greg Kroah-Hartman ddef1e8e3f Linux 4.14.151 2019-10-29 09:17:49 +01:00
Greg Kroah-Hartman b98aebd298 Linux 4.14.150 2019-10-17 13:44:04 -07:00
Greg Kroah-Hartman e132c8d7b5 Linux 4.14.149 2019-10-11 18:18:50 +02:00
Greg Kroah-Hartman 42327896f1 Linux 4.14.148 2019-10-07 18:55:23 +02:00
Greg Kroah-Hartman db1892238c Linux 4.14.147 2019-10-05 12:48:14 +02:00
Rolf Eike Beer 21b50a160d objtool: Query pkg-config for libelf location
commit 056d28d135 upstream.

If it is not in the default location, compilation fails at several points.

Signed-off-by: Rolf Eike Beer <eb@emlix.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/91a25e992566a7968fedc89ec80e7f4c83ad0548.1553622500.git.jpoimboe@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-10-05 12:47:32 +02:00