lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6fac3754-f8db-85f5-bdb1-b4c8e7ccc046@linux.ibm.com>
Date:   Thu, 10 Sep 2020 14:52:01 +0200
From:   Peter Oberparleiter <oberpar@...ux.ibm.com>
To:     Leon Romanovsky <leon@...nel.org>
Cc:     Linus Torvalds <torvalds@...ux-foundation.org>,
        Leon Romanovsky <leonro@...dia.com>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        Colin Ian King <colin.king@...onical.com>,
        Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [PATCH -rc v1] gcov: Disable gcov build with GCC 10

On 04.09.2020 17:58, Leon Romanovsky wrote:
> GCOV built with GCC 10 doesn't initialize n_function variable.
> This produces different kernel panics as was seen by Colin in
> Ubuntu [1] and me in FC 32 [2].
> 
> As a workaround, let's disable GCOV build for broken GCC 10 version.
> 
> [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1891288
> [2] https://lore.kernel.org/lkml/20200827133932.3338519-1-leon@kernel.org
> Cc: Colin Ian King <colin.king@...onical.com>
> Signed-off-by: Leon Romanovsky <leonro@...dia.com>

The following patch should fix the problem with gcov and GCC 10.
I successfully tested it with kernel 5.9-rc4 on s390 using GCC 10.1.1
and also with GCC 9.1.1 to see that it didn't break support for previous
GCC versions. In both cases there were no kernel panics and gcov worked
fine.

Could you try this patch to see if it also fixes the problem in your
environment?

---8<---
From: Peter Oberparleiter <oberpar@...ux.ibm.com>
Subject: [PATCH] gcov: add support for GCC 10.1

Using gcov to collect coverage data for kernels compiled with GCC 10.1
causes random malfunctions and kernel crashes. This is the result of a
changed GCOV_COUNTERS value in GCC 10.1 that causes a mismatch between
the layout of the gcov_info structure created by GCC profiling code and
the related structure used by the kernel.

Fix this by updating the in-kernel GCOV_COUNTERS value. Also re-enable
config GCOV_KERNEL for use with GCC 10.

Reported-by: Colin Ian King <colin.king@...onical.com>
Reported-by: Leon Romanovsky <leonro@...dia.com>
Signed-off-by: Peter Oberparleiter <oberpar@...ux.ibm.com>
---
 kernel/gcov/Kconfig   | 1 -
 kernel/gcov/gcc_4_7.c | 4 +++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/gcov/Kconfig b/kernel/gcov/Kconfig
index bb4b680e8455..3110c77230c7 100644
--- a/kernel/gcov/Kconfig
+++ b/kernel/gcov/Kconfig
@@ -4,7 +4,6 @@ menu "GCOV-based kernel profiling"
 config GCOV_KERNEL
 	bool "Enable gcov-based kernel profiling"
 	depends on DEBUG_FS
-	depends on !CC_IS_GCC || GCC_VERSION < 100000
 	select CONSTRUCTORS if !UML
 	default n
 	help
diff --git a/kernel/gcov/gcc_4_7.c b/kernel/gcov/gcc_4_7.c
index 908fdf5098c3..53c67c87f141 100644
--- a/kernel/gcov/gcc_4_7.c
+++ b/kernel/gcov/gcc_4_7.c
@@ -19,7 +19,9 @@
 #include <linux/vmalloc.h>
 #include "gcov.h"

-#if (__GNUC__ >= 7)
+#if (__GNUC__ >= 10)
+#define GCOV_COUNTERS			8
+#elif (__GNUC__ >= 7)
 #define GCOV_COUNTERS			9
 #elif (__GNUC__ > 5) || (__GNUC__ == 5 && __GNUC_MINOR__ >= 1)
 #define GCOV_COUNTERS			10
-- 
2.21.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ