linux-next: build failure after merge of the modules tree

From: Stephen Rothwell
Date: Mon Mar 24 2014 - 23:03:22 EST


Hi Rusty,

After merging the modules tree, today's linux-next build (x86_64
allmodconfig) failed like this:

In file included from include/linux/thread_info.h:11:0,
from arch/x86/include/asm/preempt.h:6,
from include/linux/preempt.h:18,
from include/linux/spinlock.h:50,
from include/linux/wait.h:8,
from include/linux/fs.h:6,
from drivers/staging/speakup/spk_types.h:9,
from drivers/staging/speakup/spk_priv.h:27,
from drivers/staging/speakup/speakup_acntsa.c:26:
include/linux/bug.h:33:45: error: negative width in bit-field '<anonymous>'
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
^
include/linux/kernel.h:848:3: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
BUILD_BUG_ON_ZERO((perms) > 0777) + \
^
include/linux/sysfs.h:75:12: note: in expansion of macro 'VERIFY_OCTAL_PERMISSIONS'
.mode = VERIFY_OCTAL_PERMISSIONS(_mode) }, \
^
drivers/staging/speakup/speakup_acntsa.c:50:2: note: in expansion of macro '__ATTR'
__ATTR(caps_start, USER_RW, spk_var_show, spk_var_store);
^

And many more ...

Exposed by commit 58f86cc89c33 ("VERIFY_OCTAL_PERMISSIONS: stricter
checking for sysfs perms").

drivers/staging/speakup/speakup.h has

#define USER_RW (S_IFREG|S_IRUGO|S_IWUGO)
and others

which are used in many attribute definitions (and only in those
definitions). So I added this fixup patch (Rusty you might like to add
this to your tree):

From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
Date: Tue, 25 Mar 2014 13:54:38 +1100
Subject: [PATCH] VERIFY_OCTAL_PERMISSIONS: fix up for staging/speakup

Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
---
drivers/staging/speakup/speakup.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/speakup/speakup.h b/drivers/staging/speakup/speakup.h
index 0126f714821a..578824a9829d 100644
--- a/drivers/staging/speakup/speakup.h
+++ b/drivers/staging/speakup/speakup.h
@@ -10,10 +10,10 @@
#define MAX_DESC_LEN 72

/* proc permissions */
-#define USER_R (S_IFREG|S_IRUGO)
-#define USER_W (S_IFREG|S_IWUGO)
-#define USER_RW (S_IFREG|S_IRUGO|S_IWUGO)
-#define ROOT_W (S_IFREG|S_IRUGO|S_IWUSR)
+#define USER_R S_IRUGO
+#define USER_W S_IWUGO
+#define USER_RW (S_IRUGO|S_IWUGO)
+#define ROOT_W (S_IRUGO|S_IWUSR)

#define TOGGLE_0 .u.n = {NULL, 0, 0, 1, 0, 0, NULL }
#define TOGGLE_1 .u.n = {NULL, 1, 0, 1, 0, 0, NULL }
--
1.9.1

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

Attachment: pgp9BCclp4zcH.pgp
Description: PGP signature