diff options
author | Arnd Bergmann <arnd@arndb.de> | 2020-05-29 23:00:27 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2020-06-11 20:03:03 +0300 |
commit | 89f3b3196e7fe63a66296c7ed95b96964963c6ea (patch) | |
tree | 8c042b9fa89e3e72e510ec5608d652881e8892e4 /drivers/staging/media/atomisp/pci/ia_css_frame_public.h | |
parent | 5b552b198c2557295becd471bff53bb520fefee5 (diff) | |
download | linux-89f3b3196e7fe63a66296c7ed95b96964963c6ea.tar.xz |
media: staging: media: atomisp: fix stack overflow in init_pipe_defaults()
When building with clang, multiple copies of the structures to be
initialized are passed around on the stack and copied locally, using an
insane amount of stack space:
drivers/staging/media/atomisp/pci/sh_css.c:2371:1: error: stack frame size of 26864 bytes in function 'create_pipe' [-Werror,-Wframe-larger-than=]
Use constantly-allocated variables plus an explicit memcpy()
to avoid that.
Co-authored-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fixes: 6dc9a2568f84 ("media: atomisp: convert default struct values to use compound-literals with designated initializers")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Diffstat (limited to 'drivers/staging/media/atomisp/pci/ia_css_frame_public.h')
-rw-r--r-- | drivers/staging/media/atomisp/pci/ia_css_frame_public.h | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/staging/media/atomisp/pci/ia_css_frame_public.h b/drivers/staging/media/atomisp/pci/ia_css_frame_public.h index d822aa235ffe..96c86f0dc81c 100644 --- a/drivers/staging/media/atomisp/pci/ia_css_frame_public.h +++ b/drivers/staging/media/atomisp/pci/ia_css_frame_public.h @@ -122,8 +122,7 @@ struct ia_css_frame_info { struct ia_css_crop_info crop_info; }; -#define IA_CSS_BINARY_DEFAULT_FRAME_INFO \ -(struct ia_css_frame_info) { \ +#define IA_CSS_BINARY_DEFAULT_FRAME_INFO { \ .format = IA_CSS_FRAME_FORMAT_NUM, \ .raw_bayer_order = IA_CSS_BAYER_ORDER_NUM, \ } @@ -185,8 +184,7 @@ struct ia_css_frame { info.format */ }; -#define DEFAULT_FRAME \ -(struct ia_css_frame) { \ +#define DEFAULT_FRAME { \ .info = IA_CSS_BINARY_DEFAULT_FRAME_INFO, \ .dynamic_queue_id = SH_CSS_INVALID_QUEUE_ID, \ .buf_type = IA_CSS_BUFFER_TYPE_INVALID, \ |