* [PATCH] drm/exynos: fix accidental on-stack copy of exynos_drm_plane @ 2023-12-14 12:32 ` Arnd Bergmann 2023-12-14 15:59 ` Marek Szyprowski 0 siblings, 1 reply; 2+ messages in thread From: Arnd Bergmann @ 2023-12-14 12:32 UTC (permalink / raw) To: Inki Dae, Seung-Woo Kim, Kyungmin Park, David Airlie, Daniel Vetter, Krzysztof Kozlowski, Christoph Manszewski Cc: Arnd Bergmann, Alim Akhtar, Thierry Reding, Steven Price, Rob Herring, Robert Foss, Kieran Bingham, Liviu Dudau, Sam Ravnborg, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel From: Arnd Bergmann <arnd@arndb.de> gcc rightfully complains about excessive stack usage in the fimd_win_set_pixfmt() function: drivers/gpu/drm/exynos/exynos_drm_fimd.c: In function 'fimd_win_set_pixfmt': drivers/gpu/drm/exynos/exynos_drm_fimd.c:750:1: error: the frame size of 1032 bytes is larger than 1024 byte drivers/gpu/drm/exynos/exynos5433_drm_decon.c: In function 'decon_win_set_pixfmt': drivers/gpu/drm/exynos/exynos5433_drm_decon.c:381:1: error: the frame size of 1032 bytes is larger than 1024 bytes There is really no reason to copy the large exynos_drm_plane structure to the stack before using one of its members, so just use a pointer instead. Fixes: 6f8ee5c21722 ("drm/exynos: fimd: Make plane alpha configurable") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 4 ++-- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index 4d986077738b..bce027552474 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -319,9 +319,9 @@ static void decon_win_set_bldmod(struct decon_context *ctx, unsigned int win, static void decon_win_set_pixfmt(struct decon_context *ctx, unsigned int win, struct drm_framebuffer *fb) { - struct exynos_drm_plane plane = ctx->planes[win]; + struct exynos_drm_plane *plane = &ctx->planes[win]; struct exynos_drm_plane_state *state = - to_exynos_plane_state(plane.base.state); + to_exynos_plane_state(plane->base.state); unsigned int alpha = state->base.alpha; unsigned int pixel_alpha; unsigned long val; diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index 8dde7b1e9b35..5bdc246f5fad 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -661,9 +661,9 @@ static void fimd_win_set_bldmod(struct fimd_context *ctx, unsigned int win, static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win, struct drm_framebuffer *fb, int width) { - struct exynos_drm_plane plane = ctx->planes[win]; + struct exynos_drm_plane *plane = &ctx->planes[win]; struct exynos_drm_plane_state *state = - to_exynos_plane_state(plane.base.state); + to_exynos_plane_state(plane->base.state); uint32_t pixel_format = fb->format->format; unsigned int alpha = state->base.alpha; u32 val = WINCONx_ENWIN; -- 2.39.2 ^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] drm/exynos: fix accidental on-stack copy of exynos_drm_plane 2023-12-14 12:32 ` [PATCH] drm/exynos: fix accidental on-stack copy of exynos_drm_plane Arnd Bergmann @ 2023-12-14 15:59 ` Marek Szyprowski 0 siblings, 0 replies; 2+ messages in thread From: Marek Szyprowski @ 2023-12-14 15:59 UTC (permalink / raw) To: Arnd Bergmann, Inki Dae, Seung-Woo Kim, Kyungmin Park, David Airlie, Daniel Vetter, Krzysztof Kozlowski Cc: Arnd Bergmann, Alim Akhtar, Thierry Reding, Steven Price, Rob Herring, Robert Foss, Kieran Bingham, Liviu Dudau, Sam Ravnborg, dri-devel, linux-arm-kernel, linux-samsung-soc, linux-kernel On 14.12.2023 13:32, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > gcc rightfully complains about excessive stack usage in the fimd_win_set_pixfmt() > function: > > drivers/gpu/drm/exynos/exynos_drm_fimd.c: In function 'fimd_win_set_pixfmt': > drivers/gpu/drm/exynos/exynos_drm_fimd.c:750:1: error: the frame size of 1032 bytes is larger than 1024 byte > drivers/gpu/drm/exynos/exynos5433_drm_decon.c: In function 'decon_win_set_pixfmt': > drivers/gpu/drm/exynos/exynos5433_drm_decon.c:381:1: error: the frame size of 1032 bytes is larger than 1024 bytes > > There is really no reason to copy the large exynos_drm_plane > structure to the stack before using one of its members, so just > use a pointer instead. > > Fixes: 6f8ee5c21722 ("drm/exynos: fimd: Make plane alpha configurable") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- > drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 4 ++-- > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 4 ++-- > 2 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > index 4d986077738b..bce027552474 100644 > --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > @@ -319,9 +319,9 @@ static void decon_win_set_bldmod(struct decon_context *ctx, unsigned int win, > static void decon_win_set_pixfmt(struct decon_context *ctx, unsigned int win, > struct drm_framebuffer *fb) > { > - struct exynos_drm_plane plane = ctx->planes[win]; > + struct exynos_drm_plane *plane = &ctx->planes[win]; > struct exynos_drm_plane_state *state = > - to_exynos_plane_state(plane.base.state); > + to_exynos_plane_state(plane->base.state); > unsigned int alpha = state->base.alpha; > unsigned int pixel_alpha; > unsigned long val; > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > index 8dde7b1e9b35..5bdc246f5fad 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > @@ -661,9 +661,9 @@ static void fimd_win_set_bldmod(struct fimd_context *ctx, unsigned int win, > static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win, > struct drm_framebuffer *fb, int width) > { > - struct exynos_drm_plane plane = ctx->planes[win]; > + struct exynos_drm_plane *plane = &ctx->planes[win]; > struct exynos_drm_plane_state *state = > - to_exynos_plane_state(plane.base.state); > + to_exynos_plane_state(plane->base.state); > uint32_t pixel_format = fb->format->format; > unsigned int alpha = state->base.alpha; > u32 val = WINCONx_ENWIN; Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-12-14 15:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20231214123248eucas1p1577bc2064401fce57a752234e1338f5a@eucas1p1.samsung.com>
2023-12-14 12:32 ` [PATCH] drm/exynos: fix accidental on-stack copy of exynos_drm_plane Arnd Bergmann
2023-12-14 15:59 ` Marek Szyprowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox