2006-11-24 12:05:04

by Yan Burman

[permalink] [raw]
Subject: [PATCH 2.6.19-rc6] sparc: replace kmalloc+memset with kzalloc

Replace kmalloc+memset with kzalloc

Signed-off-by: Yan Burman <[email protected]>

diff -rubp linux-2.6.19-rc5_orig/arch/sparc/kernel/ioport.c linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/ioport.c
--- linux-2.6.19-rc5_orig/arch/sparc/kernel/ioport.c 2006-11-09 12:16:21.000000000 +0200
+++ linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/ioport.c 2006-11-11 22:44:04.000000000 +0200
@@ -317,9 +317,8 @@ void *sbus_alloc_consistent(struct sbus_
if ((va = __get_free_pages(GFP_KERNEL|__GFP_COMP, order)) == 0)
goto err_nopages;

- if ((res = kmalloc(sizeof(struct resource), GFP_KERNEL)) == NULL)
+ if ((res = kzalloc(sizeof(struct resource), GFP_KERNEL)) == NULL)
goto err_nomem;
- memset((char*)res, 0, sizeof(struct resource));

if (allocate_resource(&_sparc_dvma, res, len_total,
_sparc_dvma.start, _sparc_dvma.end, PAGE_SIZE, NULL, NULL) != 0) {
@@ -589,12 +588,11 @@ void *pci_alloc_consistent(struct pci_de
return NULL;
}

- if ((res = kmalloc(sizeof(struct resource), GFP_KERNEL)) == NULL) {
+ if ((res = kzalloc(sizeof(struct resource), GFP_KERNEL)) == NULL) {
free_pages(va, order);
printk("pci_alloc_consistent: no core\n");
return NULL;
}
- memset((char*)res, 0, sizeof(struct resource));

if (allocate_resource(&_sparc_dvma, res, len_total,
_sparc_dvma.start, _sparc_dvma.end, PAGE_SIZE, NULL, NULL) != 0) {
diff -rubp linux-2.6.19-rc5_orig/arch/sparc/kernel/of_device.c linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/of_device.c
--- linux-2.6.19-rc5_orig/arch/sparc/kernel/of_device.c 2006-11-09 12:16:21.000000000 +0200
+++ linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/of_device.c 2006-11-11 22:44:04.000000000 +0200
@@ -793,10 +793,9 @@ struct of_device* of_platform_device_cre
{
struct of_device *dev;

- dev = kmalloc(sizeof(*dev), GFP_KERNEL);
+ dev = kzalloc(sizeof(*dev), GFP_KERNEL);
if (!dev)
return NULL;
- memset(dev, 0, sizeof(*dev));

dev->dev.parent = parent;
dev->dev.bus = bus;
diff -rubp linux-2.6.19-rc5_orig/arch/sparc/kernel/sun4d_irq.c linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/sun4d_irq.c
--- linux-2.6.19-rc5_orig/arch/sparc/kernel/sun4d_irq.c 2006-11-09 12:16:21.000000000 +0200
+++ linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/sun4d_irq.c 2006-11-11 22:44:04.000000000 +0200
@@ -545,8 +545,7 @@ void __init sun4d_init_sbi_irq(void)
nsbi = 0;
for_each_sbus(sbus)
nsbi++;
- sbus_actions = (struct sbus_action *)kmalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
- memset (sbus_actions, 0, (nsbi * 8 * 4 * sizeof(struct sbus_action)));
+ sbus_actions = kzalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
for_each_sbus(sbus) {
#ifdef CONFIG_SMP
extern unsigned char boot_cpu_id;
diff -rubp linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c
--- linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c 2006-11-09 12:16:21.000000000 +0200
+++ linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c 2006-11-11 22:44:04.000000000 +0200
@@ -41,9 +41,8 @@ iounit_init(int sbi_node, int io_node, s
struct linux_prom_registers iommu_promregs[PROMREG_MAX];
struct resource r;

- iounit = kmalloc(sizeof(struct iounit_struct), GFP_ATOMIC);
+ iounit = kzalloc(sizeof(struct iounit_struct), GFP_ATOMIC);

- memset(iounit, 0, sizeof(*iounit));
iounit->limit[0] = IOUNIT_BMAP1_START;
iounit->limit[1] = IOUNIT_BMAP2_START;
iounit->limit[2] = IOUNIT_BMAPM_START;



Regards
Yan Burman


2006-11-24 17:33:54

by Stefan Richter

[permalink] [raw]
Subject: Re: [PATCH 2.6.19-rc6] sparc: replace kmalloc+memset with kzalloc

Yan Burman wrote:
...
> --- linux-2.6.19-rc5_orig/arch/sparc/kernel/sun4d_irq.c 2006-11-09 12:16:21.000000000 +0200
> +++ linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/sun4d_irq.c 2006-11-11 22:44:04.000000000 +0200
> @@ -545,8 +545,7 @@ void __init sun4d_init_sbi_irq(void)
> nsbi = 0;
> for_each_sbus(sbus)
> nsbi++;
> - sbus_actions = (struct sbus_action *)kmalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
> - memset (sbus_actions, 0, (nsbi * 8 * 4 * sizeof(struct sbus_action)));
> + sbus_actions = kzalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
> for_each_sbus(sbus) {
> #ifdef CONFIG_SMP
> extern unsigned char boot_cpu_id;

I'm not sure about this ^ hunk, but...

> diff -rubp linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c
> --- linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c 2006-11-09 12:16:21.000000000 +0200
> +++ linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c 2006-11-11 22:44:04.000000000 +0200
> @@ -41,9 +41,8 @@ iounit_init(int sbi_node, int io_node, s
> struct linux_prom_registers iommu_promregs[PROMREG_MAX];
> struct resource r;
>
> - iounit = kmalloc(sizeof(struct iounit_struct), GFP_ATOMIC);
> + iounit = kzalloc(sizeof(struct iounit_struct), GFP_ATOMIC);
>
> - memset(iounit, 0, sizeof(*iounit));
> iounit->limit[0] = IOUNIT_BMAP1_START;
> iounit->limit[1] = IOUNIT_BMAP2_START;
> iounit->limit[2] = IOUNIT_BMAPM_START;

...in this ^, the old code and your update don't check for NULL return.
--
Stefan Richter
-=====-=-==- =-== ==---
http://arcgraph.de/sr/

2006-11-24 19:06:42

by Yan Burman

[permalink] [raw]
Subject: Re: [PATCH 2.6.19-rc6] sparc: replace kmalloc+memset with kzalloc

Stefan Richter wrote:
> Yan Burman wrote:
> ...
>
>> --- linux-2.6.19-rc5_orig/arch/sparc/kernel/sun4d_irq.c 2006-11-09 12:16:21.000000000 +0200
>> +++ linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/sun4d_irq.c 2006-11-11 22:44:04.000000000 +0200
>> @@ -545,8 +545,7 @@ void __init sun4d_init_sbi_irq(void)
>> nsbi = 0;
>> for_each_sbus(sbus)
>> nsbi++;
>> - sbus_actions = (struct sbus_action *)kmalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
>> - memset (sbus_actions, 0, (nsbi * 8 * 4 * sizeof(struct sbus_action)));
>> + sbus_actions = kzalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
>> for_each_sbus(sbus) {
>> #ifdef CONFIG_SMP
>> extern unsigned char boot_cpu_id;
>>
>
> I'm not sure about this ^ hunk, but...
>
>
>> diff -rubp linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c
>> --- linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c 2006-11-09 12:16:21.000000000 +0200
>> +++ linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c 2006-11-11 22:44:04.000000000 +0200
>> @@ -41,9 +41,8 @@ iounit_init(int sbi_node, int io_node, s
>> struct linux_prom_registers iommu_promregs[PROMREG_MAX];
>> struct resource r;
>>
>> - iounit = kmalloc(sizeof(struct iounit_struct), GFP_ATOMIC);
>> + iounit = kzalloc(sizeof(struct iounit_struct), GFP_ATOMIC);
>>
>> - memset(iounit, 0, sizeof(*iounit));
>> iounit->limit[0] = IOUNIT_BMAP1_START;
>> iounit->limit[1] = IOUNIT_BMAP2_START;
>> iounit->limit[2] = IOUNIT_BMAPM_START;
>>
>
> ...in this ^, the old code and your update don't check for NULL return.
>

Both of this parts are done at early stages, so it is probably:
a) Impossible to recover from failure
b) If you run out of memory at this stage, you are probably in very big
trouble anyway

I could modify it to check and panic if the check fails.
Would that be better?

2006-11-24 19:14:10

by Stefan Richter

[permalink] [raw]
Subject: Re: [PATCH 2.6.19-rc6] sparc: replace kmalloc+memset with kzalloc

Yan Burman wrote:
> Stefan Richter wrote:
>> ...in this ^, the old code and your update don't check for NULL return.
>
> Both of this parts are done at early stages, so it is probably:
> a) Impossible to recover from failure
> b) If you run out of memory at this stage, you are probably in very big
> trouble anyway
>
> I could modify it to check and panic if the check fails.
> Would that be better?

I hope the domain experts answer this. (I have no recommendation but
wanted to point out a potential, although unlikely, cause for trouble.)
--
Stefan Richter
-=====-=-==- =-== ==---
http://arcgraph.de/sr/

2006-11-24 21:52:34

by David Miller

[permalink] [raw]
Subject: Re: [PATCH 2.6.19-rc6] sparc: replace kmalloc+memset with kzalloc

From: Yan Burman <[email protected]>
Date: Fri, 24 Nov 2006 21:02:53 +0200

> Stefan Richter wrote:
> > Yan Burman wrote:
> > ...
> >
> >> --- linux-2.6.19-rc5_orig/arch/sparc/kernel/sun4d_irq.c 2006-11-09 12:16:21.000000000 +0200
> >> +++ linux-2.6.19-rc5_kzalloc/arch/sparc/kernel/sun4d_irq.c 2006-11-11 22:44:04.000000000 +0200
> >> @@ -545,8 +545,7 @@ void __init sun4d_init_sbi_irq(void)
> >> nsbi = 0;
> >> for_each_sbus(sbus)
> >> nsbi++;
> >> - sbus_actions = (struct sbus_action *)kmalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
> >> - memset (sbus_actions, 0, (nsbi * 8 * 4 * sizeof(struct sbus_action)));
> >> + sbus_actions = kzalloc (nsbi * 8 * 4 * sizeof(struct sbus_action), GFP_ATOMIC);
> >> for_each_sbus(sbus) {
> >> #ifdef CONFIG_SMP
> >> extern unsigned char boot_cpu_id;
> >>
> >
> > I'm not sure about this ^ hunk, but...
> >
> >
> >> diff -rubp linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c
> >> --- linux-2.6.19-rc5_orig/arch/sparc/mm/io-unit.c 2006-11-09 12:16:21.000000000 +0200
> >> +++ linux-2.6.19-rc5_kzalloc/arch/sparc/mm/io-unit.c 2006-11-11 22:44:04.000000000 +0200
> >> @@ -41,9 +41,8 @@ iounit_init(int sbi_node, int io_node, s
> >> struct linux_prom_registers iommu_promregs[PROMREG_MAX];
> >> struct resource r;
> >>
> >> - iounit = kmalloc(sizeof(struct iounit_struct), GFP_ATOMIC);
> >> + iounit = kzalloc(sizeof(struct iounit_struct), GFP_ATOMIC);
> >>
> >> - memset(iounit, 0, sizeof(*iounit));
> >> iounit->limit[0] = IOUNIT_BMAP1_START;
> >> iounit->limit[1] = IOUNIT_BMAP2_START;
> >> iounit->limit[2] = IOUNIT_BMAPM_START;
> >>
> >
> > ...in this ^, the old code and your update don't check for NULL return.
> >
>
> Both of this parts are done at early stages, so it is probably:
> a) Impossible to recover from failure
> b) If you run out of memory at this stage, you are probably in very big
> trouble anyway
>
> I could modify it to check and panic if the check fails.
> Would that be better?

Don't panic, call prom_printf() with a suitable message and then
prom_halt() just like all other early-boot failures do on sparc.

2006-12-01 01:12:03

by David Miller

[permalink] [raw]
Subject: Re: [PATCH 2.6.19-rc6] sparc: replace kmalloc+memset with kzalloc

From: Yan Burman <[email protected]>
Date: Fri, 24 Nov 2006 14:01:14 +0200

> Replace kmalloc+memset with kzalloc
>
> Signed-off-by: Yan Burman <[email protected]>

Applied and I added the necessary return value checks in
sun4d_irq.c and io-unit.c

Thanks.