On Tue, Jan 09, 2018 at 12:53:27PM +0100, Daniel Wagner wrote:
From: Andrey Ryabinin aryabinin@virtuozzo.com
commit 68920c973254c5b71a684645c5f6f82d6732c5d6 upstream.
With upcoming CONFIG_UBSAN the following BUILD_BUG_ON in net/mac80211/debugfs.c starts to trigger:
BUILD_BUG_ON(hw_flag_names[NUM_IEEE80211_HW_FLAGS] != (void *)0x1);
It seems, that compiler instrumentation causes some code deoptimizations. Because of that GCC is not being able to resolve condition in BUILD_BUG_ON() at compile time.
We could make size of hw_flag_names array unspecified and replace the condition in BUILD_BUG_ON() with following:
ARRAY_SIZE(hw_flag_names) != NUM_IEEE80211_HW_FLAGS
That will have the same effect as before (adding new flag without updating array will trigger build failure) except it doesn't fail with CONFIG_UBSAN. As a bonus this patch slightly decreases size of hw_flag_names array.
Signed-off-by: Andrey Ryabinin aryabinin@virtuozzo.com Cc: Johannes Berg johannes@sipsolutions.net Cc: "David S. Miller" davem@davemloft.net Signed-off-by: Andrew Morton akpm@linux-foundation.org Signed-off-by: Linus Torvalds torvalds@linux-foundation.org [Daniel: backport to 4.4.] Signed-off-by: Daniel Wagner daniel.wagner@siemens.com
Hi,
The only stable tree which is missing this fix is 4.4. 4.1 doesn't have 30686bf7f5b3 ("mac80211: convert HW flags to unsigned long bitmap") which makes gcc unhappy with allmodconfig. 4.9 contains the fix.
Now queued up, thanks for the backport.
greg k-h