diff mbox

Disable -Wframe-larger-than warnings with KASAN=y

Message ID 1445011330-22698-1-git-send-email-aryabinin@virtuozzo.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andrey Ryabinin Oct. 16, 2015, 4:02 p.m. UTC
When the kernel compiled with KASAN=y, GCC adds redzones
for each variable on stack. This enlarges function's stack
frame and causes:
	'warning: the frame size of X bytes is larger than Y bytes'

The worst case I've seen for now is following:
 ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
 ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448 bytes is larger than 2048 bytes [-Wframe-larger-than=]
  }
   ^
That kind of warning becomes useless with KASAN=y. It doesn't necessarily
indicate that there is some problem in the code, thus we should turn it off.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
---
 lib/Kconfig.debug | 1 +
 1 file changed, 1 insertion(+)

Comments

Abylai Ospan Oct. 16, 2015, 4:05 p.m. UTC | #1
Hello,

Acked-by: Abylay Ospan <aospan@netup.ru>



2015-10-16 19:02 GMT+03:00 Andrey Ryabinin <aryabinin@virtuozzo.com>:
> When the kernel compiled with KASAN=y, GCC adds redzones
> for each variable on stack. This enlarges function's stack
> frame and causes:
>         'warning: the frame size of X bytes is larger than Y bytes'
>
> The worst case I've seen for now is following:
>  ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
>  ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>   }
>    ^
> That kind of warning becomes useless with KASAN=y. It doesn't necessarily
> indicate that there is some problem in the code, thus we should turn it off.
>
> Reported-by: Fengguang Wu <fengguang.wu@intel.com>
> Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
> ---
>  lib/Kconfig.debug | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index ab76b99..1d1521c 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -197,6 +197,7 @@ config ENABLE_MUST_CHECK
>  config FRAME_WARN
>         int "Warn for stack frames larger than (needs gcc 4.4)"
>         range 0 8192
> +       default 0 if KASAN
>         default 1024 if !64BIT
>         default 2048 if 64BIT
>         help
> --
> 2.4.9
>
Andi Kleen Oct. 16, 2015, 4:47 p.m. UTC | #2
On Fri, Oct 16, 2015 at 07:02:10PM +0300, Andrey Ryabinin wrote:
> When the kernel compiled with KASAN=y, GCC adds redzones
> for each variable on stack. This enlarges function's stack
> frame and causes:
> 	'warning: the frame size of X bytes is larger than Y bytes'
> 
> The worst case I've seen for now is following:
>  ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
>  ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448 bytes is larger than 2048 bytes [-Wframe-larger-than=]
>   }
>    ^
> That kind of warning becomes useless with KASAN=y. It doesn't necessarily
> indicate that there is some problem in the code, thus we should turn it off.

If KASAN is really bloating the stack that much you may need to consider
increasing the stack size with KASAN on. We have 16K now, but even that
may not be enough if you more than double it.

Otherwise it may just crash with KASAN on in more complex setups.

-Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrey Ryabinin Oct. 16, 2015, 5:19 p.m. UTC | #3
16 ??????? 2015 ?. 19:47:00 GMT+03:00, Andi Kleen <ak@linux.intel.com> ?????:
>On Fri, Oct 16, 2015 at 07:02:10PM +0300, Andrey Ryabinin wrote:
>> When the kernel compiled with KASAN=y, GCC adds redzones
>> for each variable on stack. This enlarges function's stack
>> frame and causes:
>> 	'warning: the frame size of X bytes is larger than Y bytes'
>> 
>> The worst case I've seen for now is following:
>>  ../net/wireless/nl80211.c: In function ‘nl80211_send_wiphy’:
>>  ../net/wireless/nl80211.c:1731:1: warning: the frame size of 5448
>bytes is larger than 2048 bytes [-Wframe-larger-than=]
>>   }
>>    ^
>> That kind of warning becomes useless with KASAN=y. It doesn't
>necessarily
>> indicate that there is some problem in the code, thus we should turn
>it off.
>
>If KASAN is really bloating the stack that much you may need to
>consider
>increasing the stack size with KASAN on. We have 16K now, but even that
>may not be enough if you more than double it.
>

Such huge bloat only in a few places, anyway it's done already. Stack is 32k with kasan.

>Otherwise it may just crash with KASAN on in more complex setups.
>
>-Andi
>--
>To unsubscribe from this list: send the line "unsubscribe linux-kernel"
>in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index ab76b99..1d1521c 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -197,6 +197,7 @@  config ENABLE_MUST_CHECK
 config FRAME_WARN
 	int "Warn for stack frames larger than (needs gcc 4.4)"
 	range 0 8192
+	default 0 if KASAN
 	default 1024 if !64BIT
 	default 2048 if 64BIT
 	help