Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[RFC] taint/module: Fix problems when out-of-kernel driver defines true or false

11 views
Skip to first unread message

Larry Finger

unread,
Dec 24, 2016, 3:00:05 PM12/24/16
to
Commit 7fd8329ba502 ("taint/module: Clean up global and module taint
flags handling") used the key words true and false as character members
of a new struct. These names cause problems when out-of-kernel modules
such as VirtualBox include their own definitions of true and false.

Fixes: 7fd8329ba502 ("taint/module: Clean up global and module taint flags handling")
Signed-off-by: Larry Finger <Larry....@lwfinger.net>
Cc: Petr Mladek <pml...@suse.com>
Cc: Jessica Yu <je...@redhat.com>
Cc: Rusty Russell <ru...@rustcorp.com.au>
---
include/linux/kernel.h | 4 ++--
kernel/module.c | 2 +-
kernel/panic.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 56aec84..cb09238 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -514,8 +514,8 @@ extern enum system_states {
#define TAINT_FLAGS_COUNT 16

struct taint_flag {
- char true; /* character printed when tainted */
- char false; /* character printed when not tainted */
+ char c_true; /* character printed when tainted */
+ char c_false; /* character printed when not tainted */
bool module; /* also show as a per-module taint flag */
};

diff --git a/kernel/module.c b/kernel/module.c
index f7482db..5f7d482 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1145,7 +1145,7 @@ static size_t module_flags_taint(struct module *mod, char *buf)

for (i = 0; i < TAINT_FLAGS_COUNT; i++) {
if (taint_flags[i].module && test_bit(i, &mod->taints))
- buf[l++] = taint_flags[i].true;
+ buf[l++] = taint_flags[i].c_true;
}

return l;
diff --git a/kernel/panic.c b/kernel/panic.c
index c51edaa..901c4fb 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -355,7 +355,7 @@ const char *print_tainted(void)
for (i = 0; i < TAINT_FLAGS_COUNT; i++) {
const struct taint_flag *t = &taint_flags[i];
*s++ = test_bit(i, &tainted_mask) ?
- t->true : t->false;
+ t->c_true : t->c_false;
}
*s = 0;
} else
--
2.10.2

Larry Finger

unread,
Jan 1, 2017, 9:30:04 PM1/1/17
to

Christoph Hellwig

unread,
Jan 2, 2017, 1:00:04 AM1/2/17
to
On Sun, Jan 01, 2017 at 08:25:25PM -0600, Larry Finger wrote:
> Commit 7fd8329ba502 ("taint/module: Clean up global and module taint
> flags handling") used the key words true and false as character members
> of a new struct. These names cause problems when out-of-kernel modules
> such as VirtualBox include their own definitions of true and false.

Whuch they should not define, so fix them, just like you;d fix them for
everything else that would conflict with something in kernel headers.

Petr Mladek

unread,
Jan 2, 2017, 6:00:05 AM1/2/17
to
On Sun 2017-01-01 20:25:25, Larry Finger wrote:
> Commit 7fd8329ba502 ("taint/module: Clean up global and module taint
> flags handling") used the key words true and false as character members
> of a new struct. These names cause problems when out-of-kernel modules
> such as VirtualBox include their own definitions of true and false.
>
> Fixes: 7fd8329ba502 ("taint/module: Clean up global and module taint flags handling")
> Signed-off-by: Larry Finger <Larry....@lwfinger.net>
> Cc: Petr Mladek <pml...@suse.com>
> Cc: Jessica Yu <je...@redhat.com>
> Cc: Rusty Russell <ru...@rustcorp.com.au>

I like this variant a bit more than the tainted/untainted one.

Reviewed-by: Petr Mladek <pml...@suse.com>

Best Regards,
Petr

Rusty Russell

unread,
Jan 2, 2017, 10:40:04 PM1/2/17
to
Larry Finger <Larry....@lwfinger.net> writes:
> Commit 7fd8329ba502 ("taint/module: Clean up global and module taint
> flags handling") used the key words true and false as character members
> of a new struct. These names cause problems when out-of-kernel modules
> such as VirtualBox include their own definitions of true and false.
>
> Fixes: 7fd8329ba502 ("taint/module: Clean up global and module taint flags handling")
> Signed-off-by: Larry Finger <Larry....@lwfinger.net>
> Cc: Petr Mladek <pml...@suse.com>
> Cc: Jessica Yu <je...@redhat.com>
> Cc: Rusty Russell <ru...@rustcorp.com.au>

Acked-by: Rusty Russell <ru...@rustcorp.com.au>

Thanks,
Rusty.

Jessica Yu

unread,
Jan 3, 2017, 10:10:05 PM1/3/17
to
+++ Larry Finger [01/01/17 20:25 -0600]:
>Commit 7fd8329ba502 ("taint/module: Clean up global and module taint
>flags handling") used the key words true and false as character members
>of a new struct. These names cause problems when out-of-kernel modules
>such as VirtualBox include their own definitions of true and false.
>
>Fixes: 7fd8329ba502 ("taint/module: Clean up global and module taint flags handling")
>Signed-off-by: Larry Finger <Larry....@lwfinger.net>
>Cc: Petr Mladek <pml...@suse.com>
>Cc: Jessica Yu <je...@redhat.com>
>Cc: Rusty Russell <ru...@rustcorp.com.au>

Applied, thanks.

Jessica

Jessica Yu

unread,
Jan 17, 2017, 1:00:05 PM1/17/17
to
+++ Larry Finger [17/01/17 10:08 -0600]:
>Jessica,
>
>What is the status of the patch? VirtualBox has converted to the hotplug
>state manager, thus their drivers now build, but only if this patch has
>been applied.
>
>Thanks,
>
>Larry

This fix has already been sitting on modules-next for some time,
queued up for the next merge window. But since it was actually one of
the patches from the last merge window that caused the OOT module
breakage, this should have be an -rc fix instead, my mistake. I will
send a pull request for -rc5. Thanks for pinging.

Jessica

Sid Boyce

unread,
Jan 18, 2017, 4:40:06 AM1/18/17
to
Latest pull of 4.10-rc4 includes the fix.
Kernel builds and so does modules for VirtualBox-5.1-5.1.14_112924.
# lsmod|grep vbox
vboxpci 24576 0
vboxnetadp 28672 0
vboxnetflt 28672 0
vboxdrv 417792 3 vboxnetadp,vboxnetflt,vboxpci

git show
---------
commit 0aa0313f9d576affd7747cc3f179feb097d28990
Merge: 4b19a9e20bf9 5eb7c0d04f04
Author: Linus Torvalds <torv...@linux-foundation.org>
Date: Tue Jan 17 14:49:21 2017 -0800

Merge tag 'modules-for-v4.10-rc5' of
git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux

Pull modules fix from Jessica Yu:

- fix out-of-tree module breakage when it supplies its own definitions
of true and false

* tag 'modules-for-v4.10-rc5' of
git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux:
taint/module: Fix problems when out-of-kernel driver defines true
or false
Regards
Sid.

--
Sid Boyce ... Hamradio License G3VBV, Licensed Private Pilot
Emeritus IBM/Amdahl Mainframes and Sun/Fujitsu Servers Tech Support
Senior Staff Specialist, Cricket Coach
Microsoft Windows Free Zone - Linux used for all Computing Tasks
0 new messages