# git rev-parse -q --verify e4d8a29997731b3bb14059024b24df9f784288d0^{commit} e4d8a29997731b3bb14059024b24df9f784288d0 already have revision, skipping fetch # git checkout -q -f -B kisskb e4d8a29997731b3bb14059024b24df9f784288d0 # git clean -qxdf # < git log -1 # commit e4d8a29997731b3bb14059024b24df9f784288d0 # Author: Mikulas Patocka # Date: Wed Apr 27 11:26:40 2022 -0400 # # hex2bin: fix access beyond string end # # If we pass too short string to "hex2bin" (and the string size without # the terminating NUL character is even), "hex2bin" reads one byte after # the terminating NUL character. This patch fixes it. # # Note that hex_to_bin returns -1 on error and hex2bin return -EINVAL on # error - so we can't just return the variable "hi" or "lo" on error. # This inconsistency may be fixed in the next merge window, but for the # purpose of fixing this bug, we just preserve the existing behavior and # return -1 and -EINVAL. # # Signed-off-by: Mikulas Patocka # Reviewed-by: Andy Shevchenko # Fixes: b78049831ffe ("lib: add error checking to hex2bin") # Cc: stable@vger.kernel.org # Signed-off-by: Linus Torvalds # < /opt/cross/kisskb/korg/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 e4d8a29997731b3bb14059024b24df9f784288d0 # < make -s -j 40 ARCH=powerpc O=/kisskb/build/linus_skiroot_defconfig_powerpc-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- skiroot_defconfig # < make -s -j 40 ARCH=powerpc O=/kisskb/build/linus_skiroot_defconfig_powerpc-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 40 ARCH=powerpc O=/kisskb/build/linus_skiroot_defconfig_powerpc-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig # make -s -j 40 ARCH=powerpc O=/kisskb/build/linus_skiroot_defconfig_powerpc-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- In file included from /kisskb/src/include/linux/byteorder/little_endian.h:5, from /kisskb/src/arch/powerpc/include/uapi/asm/byteorder.h:12, from /kisskb/src/include/asm-generic/bitops/le.h:6, from /kisskb/src/arch/powerpc/include/asm/bitops.h:336, from /kisskb/src/include/linux/bitops.h:33, from /kisskb/src/include/linux/kernel.h:22, from /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:46: /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c: In function '_base_make_ioc_operational': /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5396:40: warning: array subscript 'Mpi2SasIOUnitPage1_t {aka struct _MPI2_CONFIG_PAGE_SASIOUNIT_1}[0]' is partly outside array bounds of 'unsigned char[20]' [-Warray-bounds] 5396 | (le16_to_cpu(sas_iounit_pg1->SASWideMaxQueueDepth)) ? /kisskb/src/include/uapi/linux/byteorder/little_endian.h:37:51: note: in definition of macro '__le16_to_cpu' 37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) | ^ /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5396:14: note: in expansion of macro 'le16_to_cpu' 5396 | (le16_to_cpu(sas_iounit_pg1->SASWideMaxQueueDepth)) ? | ^~~~~~~~~~~ /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5382:26: note: referencing an object of size 20 allocated by 'kzalloc' 5382 | sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL); | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from /kisskb/src/include/linux/byteorder/little_endian.h:5, from /kisskb/src/arch/powerpc/include/uapi/asm/byteorder.h:12, from /kisskb/src/include/asm-generic/bitops/le.h:6, from /kisskb/src/arch/powerpc/include/asm/bitops.h:336, from /kisskb/src/include/linux/bitops.h:33, from /kisskb/src/include/linux/kernel.h:22, from /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:46: /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5400:40: warning: array subscript 'Mpi2SasIOUnitPage1_t {aka struct _MPI2_CONFIG_PAGE_SASIOUNIT_1}[0]' is partly outside array bounds of 'unsigned char[20]' [-Warray-bounds] 5400 | (le16_to_cpu(sas_iounit_pg1->SASNarrowMaxQueueDepth)) ? /kisskb/src/include/uapi/linux/byteorder/little_endian.h:37:51: note: in definition of macro '__le16_to_cpu' 37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) | ^ /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5400:14: note: in expansion of macro 'le16_to_cpu' 5400 | (le16_to_cpu(sas_iounit_pg1->SASNarrowMaxQueueDepth)) ? | ^~~~~~~~~~~ /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5382:26: note: referencing an object of size 20 allocated by 'kzalloc' 5382 | sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL); | ^~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5403:43: warning: array subscript 'Mpi2SasIOUnitPage1_t {aka struct _MPI2_CONFIG_PAGE_SASIOUNIT_1}[0]' is partly outside array bounds of 'unsigned char[20]' [-Warray-bounds] 5403 | ioc->max_sata_qd = (sas_iounit_pg1->SATAMaxQDepth) ? | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ /kisskb/src/drivers/scsi/mpt3sas/mpt3sas_base.c:5382:26: note: referencing an object of size 20 allocated by 'kzalloc' 5382 | sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL); | ^~~~~~~~~~~~~~~~~~~~~~~ Completed OK # rm -rf /kisskb/build/linus_skiroot_defconfig_powerpc-gcc11 # Build took: 0:01:07.498256