ARM: fix memset size error
PATCH 1/6 ARM: fix memset size error
The size passing to memset is wrong. And here we can replace kmalloc with kzalloc.
Signed-off-by Li Zefan <[email protected]>
--- arch/arm/common/uengine.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
arch/arm/common/uengine.c +2 -4
@@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)u8 *ucode;int i; - gpr_a =kmalloc (128 *sizeof (u32),GFP_KERNEL ); - gpr_b =kmalloc (128 *sizeof (u32),GFP_KERNEL ); + gpr_a =kzalloc (128 *sizeof (u32),GFP_KERNEL ); + gpr_b =kzalloc (128 *sizeof (u32),GFP_KERNEL ); ucode =kmalloc (513 *5 ,GFP_KERNEL );if (gpr_a ==NULL || gpr_b ==NULL || ucode ==NULL ) {kfree (ucode);
@@ -388,8 +388,6 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)if (c->uengine_parameters &IXP2000_UENGINE_4_CONTEXTS ) per_ctx_regs =32 ; -memset (gpr_a,0 ,sizeof (gpr_a)); -memset (gpr_b,0 ,sizeof (gpr_b));for (i =0 ; i <256 ; i++) {struct ixp2000_reg_value *r = c->initial_reg_values + i;u32 *bank;
Signature · 1 line
1.5.3.rc7
Quoted 26 lines · Li Zefan
The size passing to memset is wrong. And here we can replace kmalloc with kzalloc.
Signed-off-by Li Zefan <[email protected]>
--- arch/arm/common/uengine.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)arch/arm/common/uengine.c +2
-2@@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)u8 *ucode;int i; - gpr_a =kmalloc (128 *sizeof (u32),GFP_KERNEL ); - gpr_b =kmalloc (128 *sizeof (u32),GFP_KERNEL ); + gpr_a =kzalloc (128 *sizeof (u32),GFP_KERNEL ); + gpr_b =kzalloc (128 *sizeof (u32),GFP_KERNEL ); ucode =kmalloc (513 *5 ,GFP_KERNEL );if (gpr_a ==NULL || gpr_b ==NULL || ucode ==NULL ) {kfree (ucode);
arch/arm/common/uengine.c static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c) · line 393
Quoted 8 lines
arch/arm/common/uengine.c +0
-2@@ -388,8 +388,6 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)if (c->uengine_parameters &IXP2000_UENGINE_4_CONTEXTS ) per_ctx_regs =32 ; -memset (gpr_a,0 ,sizeof (gpr_a)); -memset (gpr_b,0 ,sizeof (gpr_b));for (i =0 ; i <256 ; i++) {struct ixp2000_reg_value *r = c->initial_reg_values + i;u32 *bank;
it's unlikely that patch will cause any trouble whatsoever, but
notice that it *is* changing the underlying logic. those original memsets should probably have been written initially as "sizeof(*gpr_a)" so they would previously have zeroed only memory the
^
size of a pointer, no?
now, i'm guessing the logic is correct but i figured it's worth
noting what the code *used* to do. unless i'm misreading something horribly.
rday
Signature · 7 lines
======================================================================== Robert P. J. Day Linux Consulting, Training and Annoying Kernel Pedantry Waterloo, Ontario, CANADA http://crashcourse.ca ========================================================================
Quoted 40 lines · Robert P. J. Day
Quoted 26 lines · Li Zefan
The size passing to memset is wrong. And here we can replace kmalloc with kzalloc.
Signed-off-by Li Zefan <[email protected]>
--- arch/arm/common/uengine.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)arch/arm/common/uengine.c +2
-2@@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)u8 *ucode;int i; - gpr_a =kmalloc (128 *sizeof (u32),GFP_KERNEL ); - gpr_b =kmalloc (128 *sizeof (u32),GFP_KERNEL ); + gpr_a =kzalloc (128 *sizeof (u32),GFP_KERNEL ); + gpr_b =kzalloc (128 *sizeof (u32),GFP_KERNEL ); ucode =kmalloc (513 *5 ,GFP_KERNEL );if (gpr_a ==NULL || gpr_b ==NULL || ucode ==NULL ) {kfree (ucode);arch/arm/common/uengine.c static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c) · line 393
Quoted 8 lines
arch/arm/common/uengine.c +0
-2@@ -388,8 +388,6 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)if (c->uengine_parameters &IXP2000_UENGINE_4_CONTEXTS ) per_ctx_regs =32 ; -memset (gpr_a,0 ,sizeof (gpr_a)); -memset (gpr_b,0 ,sizeof (gpr_b));for (i =0 ; i <256 ; i++) {struct ixp2000_reg_value *r = c->initial_reg_values + i;u32 *bank;it's unlikely that patch will cause any trouble whatsoever, but
notice that it *is* changing the underlying logic. those original memsets should probably have been written initially as "sizeof(*gpr_a)" so they would previously have zeroed only memory the
Quoted 7 lines
^size of a pointer, no?
now, i'm guessing the logic is correct but i figured it's worth
noting what the code *used* to do. unless i'm misreading something horribly.
In the for loop, some elems of gpr_a and gpr_b will be assigned with a value, but not all elems. So those unassigned elems should be filled with 0.
I think it happens now and then to mistake to regard a pointer as a static array, and I guess this is what sizeof(gpr_a) means.
Li Zefan