crypto: qat - avoid memcpy() overflow warning
Subsystems (2)
PATCH 1/1 crypto: qat - avoid memcpy() overflow warning
From: Arnd Bergmann <[email protected]>
The use of array_size() leads gcc to assume the memcpy() can have a larger limit than actually possible, which triggers a string fortification warning:
In file included from include/linux/string.h:296,
from include/linux/bitmap.h:12,
from include/linux/cpumask.h:12,
from include/linux/sched.h:16,
from include/linux/delay.h:23,
from include/linux/iopoll.h:12,
from drivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c:3:
In function 'fortify_memcpy_chk',
inlined from 'adf_gen4_init_thd2arb_map' at drivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c:401:3:include/linux/fortify-string.h:579:4: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning]
579 | __write_overflow_field(p_size_field, size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/fortify-string.h:588:4: error: call to '__read_overflow2_field' declared with attribute warning: detected read beyond size of field (2nd parameter); maybe use struct_group()? [-Werror=attribute-warning]
588 | __read_overflow2_field(q_size_field, size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Add an explicit range check to avoid this.
--- drivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c +3 -0
@@ -398,6 +398,9 @@ int adf_gen4_init_thd2arb_map(struct adf_accel_dev *accel_dev)ADF_GEN4_ADMIN_ACCELENGINES ;if (srv_id ==SVC_DCC ) { +if (ae_cnt >ICP_QAT_HW_AE_DELIMITER ) +return -EINVAL ; +memcpy (thd2arb_map, thrd_to_arb_map_dcc,array_size (sizeof (*thd2arb_map), ae_cnt));return 0 ;
Signature · 1 line
2.39.2
Quoted 21 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
The use of
array_size()leads gcc to assume thememcpy()can have a larger limit than actually possible, which triggers a string fortification warning:In file included from
include/linux/string.h:296,
frominclude/linux/bitmap.h:12,
frominclude/linux/cpumask.h:12,
frominclude/linux/sched.h:16,
frominclude/linux/delay.h:23,
frominclude/linux/iopoll.h:12,
fromdrivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c:3:
In function 'fortify_memcpy_chk',
inlined from 'adf_gen4_init_thd2arb_map' atdrivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c:401:3:include/linux/fortify-string.h:579:4: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe usestruct_group()? [-Werror=attribute-warning]579 | __write_overflow_field(p_size_field, size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/fortify-string.h:588:4: error: call to '__read_overflow2_field' declared with attribute warning: detected read beyond size of field (2nd parameter); maybe use struct_group()? [-Werror=attribute-warning] 588 | __read_overflow2_field(q_size_field, size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quoted 4 lines
Add an explicit range check to avoid this.
Fixes 5da6a2d5353e ("crypto: qat - generate dynamically arbiter mappings")Signed-off-by Arnd Bergmann <[email protected]>
Herbert Xu
maintainerQuoted 21 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
The use of
array_size()leads gcc to assume thememcpy()can have a larger limit than actually possible, which triggers a string fortification warning:In file included from
include/linux/string.h:296,
frominclude/linux/bitmap.h:12,
frominclude/linux/cpumask.h:12,
frominclude/linux/sched.h:16,
frominclude/linux/delay.h:23,
frominclude/linux/iopoll.h:12,
fromdrivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c:3:
In function 'fortify_memcpy_chk',
inlined from 'adf_gen4_init_thd2arb_map' atdrivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c:401:3:include/linux/fortify-string.h:579:4: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe usestruct_group()? [-Werror=attribute-warning]579 | __write_overflow_field(p_size_field, size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/fortify-string.h:588:4: error: call to '__read_overflow2_field' declared with attribute warning: detected read beyond size of field (2nd parameter); maybe use struct_group()? [-Werror=attribute-warning] 588 | __read_overflow2_field(q_size_field, size); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quoted 7 lines
Add an explicit range check to avoid this.
Fixes 5da6a2d5353e ("crypto: qat - generate dynamically arbiter mappings")Signed-off-by Arnd Bergmann <[email protected]>--- drivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c | 3 +++ 1 file changed, 3 insertions(+)
Patch applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt