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-next>] [day] [month] [year] [list]
Message-ID: <20180621203526.172ab5c4@vmware.local.home>
Date:   Thu, 21 Jun 2018 20:35:26 -0400
From:   Steven Rostedt <rostedt@...dmis.org>
To:     LKML <linux-kernel@...r.kernel.org>
Cc:     Linus Torvalds <torvalds@...ux-foundation.org>,
        Will Deacon <will.deacon@....com>,
        "Peter Zijlstra (Intel)" <peterz@...radead.org>,
        Waiman Long <longman@...hat.com>,
        Boqun Feng <boqun.feng@...il.com>,
        Ingo Molnar <mingo@...nel.org>,
        linux-arm-kernel@...ts.infradead.org,
        Andrew Morton <akpm@...ux-foundation.org>
Subject: [PATCH] locking/qspinlock: Fix build for anonymous union in older
 gcc compilers

From: Steven Rostedt (VMware) <rostedt@...dmis.org>

One of my tests compiles the kernel with gcc 4.5.3, and I hit the
following build error:

/work/git/linux-trace.git/include/linux/semaphore.h: In function 'sema_init':
/work/git/linux-trace.git/include/linux/semaphore.h:35:17: error: unknown field 'val' specified in initializer
/work/git/linux-trace.git/include/linux/semaphore.h:35:17: warning: missing braces around initializer
/work/git/linux-trace.git/include/linux/semaphore.h:35:17: warning: (near initialization for '(anonymous).raw_lock.<anonymous>.val')
In file included from /work/git/linux-trace.git/include/linux/sched/user.h:7:0,
                 from /work/git/linux-trace.git/include/linux/cred.h:22,
                 from /work/git/linux-trace.git/include/linux/seq_file.h:12,
                 from /work/git/linux-trace.git/include/linux/cgroup.h:18,
                 from /work/git/linux-trace.git/include/linux/memcontrol.h:22,
                 from /work/git/linux-trace.git/include/linux/swap.h:9,
                 from /work/git/linux-trace.git/include/linux/suspend.h:5,
                 from /work/git/linux-trace.git/arch/x86/kernel/asm-offsets.c:13:


I bisected it down to the introduction of the commit that makes
qspinlock have an anonymous union, which makes initializing it special
for older compilers. By adding strategic brackets, it makes the build
happy again.

Fixes: 625e88be1f41 ("locking/qspinlock: Merge 'struct __qspinlock' into 'struct qspinlock'")
Signed-off-by: Steven Rostedt (VMware) <rostedt@...dmis.org>
---
diff --git a/include/asm-generic/qspinlock_types.h b/include/asm-generic/qspinlock_types.h
index 0763f065b975..d10f1e7d6ba8 100644
--- a/include/asm-generic/qspinlock_types.h
+++ b/include/asm-generic/qspinlock_types.h
@@ -63,7 +63,7 @@ typedef struct qspinlock {
 /*
  * Initializier
  */
-#define	__ARCH_SPIN_LOCK_UNLOCKED	{ .val = ATOMIC_INIT(0) }
+#define	__ARCH_SPIN_LOCK_UNLOCKED	{ { .val = ATOMIC_INIT(0) } }
 
 /*
  * Bitfields in the atomic value:

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ