On Mon, 19 Oct 2026, "Arnd Bergmann" <[email protected]> wrote: > On Mon, Oct 19, 2026, at 15:28, Jani Nikula wrote: >> On Tue, 13 Oct 2026, Arnd Bergmann <[email protected]> wrote: >>> From: Arnd Bergmann <[email protected]> >>> >>> The drm_parse_cea_ext() calls into nine individual parser functions >>> based on the data format. If all of those get inlined and KASAN_STACK >>> is enabled, this can explode the combined stack usage beyond a >>> reasonable amount: >>> >>> drivers/gpu/drm/drm_edid.c: In function 'update_display_info': >>> drivers/gpu/drm/drm_edid.c:7040:1: error: the frame size of 1888 bytes is >>> larger than 1536 bytes [-Werror=frame-larger-than=] >>> 7040 | } >>> | ^ >>> >>> Mark all of the individual parser functions as noinline_for_stack >>> to avoid this and keep their stack frames separate. This reduces >>> the stack usage for update_display_info/drm_parse_cea_ext to >>> a more manageable 744 bytes, while each parser only adds at most >>> 200 bytes on top. >> >> Is there really no way to tell the compiler to not do silly things in a >> more generic way? > > The problem is really the sanitizers here, which turn off the > optimizations that gcc relies on for its normal behavior and > which cause additional register pressure for the inserted function > calls.
Cc: a bunch of KASAN folks. I think it's really silly and ugly to have to sprinkle noinline_for_stack all over the place in pretty normal code [1]. The stack usage for each individual function is fairly small. BR, Jani. [1] https://lore.kernel.org/r/[email protected] -- Jani Nikula, Intel
