Re: slab.h debugging tags....

From: Rasmus Villemoes
Date: Fri Oct 09 2015 - 15:40:41 EST


On Fri, Oct 09 2015, Valdis Kletnieks <Valdis.Kletnieks@xxxxxx> wrote:

> Author: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
> Date: Wed Oct 7 15:09:20 2015 +1100
>
> slab.h: sprinkle __assume_aligned attributes
>
> causes *tons* of whinges if you do 'make C=2' with sparse 0.5.0:
>
> CHECK drivers/media/usb/pwc/pwc-if.c
> include/linux/slab.h:307:43: error: attribute '__assume_aligned__': unknown attribute
> include/linux/slab.h:308:58: error: attribute '__assume_aligned__': unknown attribute
> include/linux/slab.h:337:73: error: attribute '__assume_aligned__': unknown attribute
> include/linux/slab.h:375:74: error: attribute '__assume_aligned__': unknown attribute
> include/linux/slab.h:378:80: error: attribute '__assume_aligned__': unknown attribute
>
> [/usr/src/linux-next] grep CHECK build.default | wc
> 1779 3558 59132
> [/usr/src/linux-next] grep slab.h build.default | wc
> 7225 43350 621350
>
> Canned it after about 1/3 of the build.
>
> Where's a sparse that can handle this?

I don't think there is any (sparse 0.5 seems to be the latest). Hm,
if I'm reading the sparse source correctly, it is pretending to be
whatever gcc version it itself is built with. That's... um... let's just
say odd.

Does this fix it for you?

Subject: [PATCH] slab.h: hide assume_aligned attribute from sparse

sparse apparently pretends to be gcc >= 4.9, yet isn't prepared to
handle all the function attributes supported by those gccs and
complains loudly. So hide the definition of __assume_aligned from it
(so that the generic one in compiler.h gets used).

Reported-by: Valdis Kletnieks <Valdis.Kletnieks@xxxxxx>
Signed-off-by: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
---
include/linux/compiler-gcc.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 18606a460baf..dc13ceeef8c8 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -211,7 +211,7 @@
#endif


-#if GCC_VERSION >= 40900
+#if GCC_VERSION >= 40900 && !defined(__CHECKER__)
/*
* __assume_aligned(n, k): Tell the optimizer that the returned
* pointer can be assumed to be k modulo n. The second argument is
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/