[PATCH v2] drivers: hisilicon: fix mismatch in get/set sgl_sge_nr

Ye Weihua posted 1 patch 3 years, 8 months ago
drivers/crypto/hisilicon/zip/zip_crypto.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH v2] drivers: hisilicon: fix mismatch in get/set sgl_sge_nr
Posted by Ye Weihua 3 years, 8 months ago
KASAN reported this Bug:

	[17619.659757] BUG: KASAN: global-out-of-bounds in param_get_int+0x34/0x60
	[17619.673193] Read of size 4 at addr fffff01332d7ed00 by task read_all/1507958
	...
	[17619.698934] The buggy address belongs to the variable:
	[17619.708371]  sgl_sge_nr+0x0/0xffffffffffffa300 [hisi_zip]

There is a mismatch in hisi_zip when get/set the variable sgl_sge_nr.
The type of sgl_sge_nr is u16, and get/set sgl_sge_nr by
param_get/set_int.

Replacing param_get/set_int to param_get/set_ushort can fix this bug.

Fixes: f081fda293ffb ("crypto: hisilicon - add sgl_sge_nr module param for zip")
Signed-off-by: Ye Weihua <yeweihua4@huawei.com>
---
 drivers/crypto/hisilicon/zip/zip_crypto.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/hisilicon/zip/zip_crypto.c b/drivers/crypto/hisilicon/zip/zip_crypto.c
index 9520a4113c81..a91e6e0e9c69 100644
--- a/drivers/crypto/hisilicon/zip/zip_crypto.c
+++ b/drivers/crypto/hisilicon/zip/zip_crypto.c
@@ -122,12 +122,12 @@ static int sgl_sge_nr_set(const char *val, const struct kernel_param *kp)
 	if (ret || n == 0 || n > HISI_ACC_SGL_SGE_NR_MAX)
 		return -EINVAL;
 
-	return param_set_int(val, kp);
+	return param_set_ushort(val, kp);
 }
 
 static const struct kernel_param_ops sgl_sge_nr_ops = {
 	.set = sgl_sge_nr_set,
-	.get = param_get_int,
+	.get = param_get_ushort,
 };
 
 static u16 sgl_sge_nr = HZIP_SGL_SGE_NR;
-- 
2.17.1
Re: [PATCH v2] drivers: hisilicon: fix mismatch in get/set sgl_sge_nr
Posted by Herbert Xu 3 years, 7 months ago
On Thu, Jul 28, 2022 at 10:07:58AM +0800, Ye Weihua wrote:
> KASAN reported this Bug:
> 
> 	[17619.659757] BUG: KASAN: global-out-of-bounds in param_get_int+0x34/0x60
> 	[17619.673193] Read of size 4 at addr fffff01332d7ed00 by task read_all/1507958
> 	...
> 	[17619.698934] The buggy address belongs to the variable:
> 	[17619.708371]  sgl_sge_nr+0x0/0xffffffffffffa300 [hisi_zip]
> 
> There is a mismatch in hisi_zip when get/set the variable sgl_sge_nr.
> The type of sgl_sge_nr is u16, and get/set sgl_sge_nr by
> param_get/set_int.
> 
> Replacing param_get/set_int to param_get/set_ushort can fix this bug.
> 
> Fixes: f081fda293ffb ("crypto: hisilicon - add sgl_sge_nr module param for zip")
> Signed-off-by: Ye Weihua <yeweihua4@huawei.com>
> ---
>  drivers/crypto/hisilicon/zip/zip_crypto.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Patch applied.  Thanks.
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt