2014-07-19 11:36:46

by Himangi Saraogi

[permalink] [raw]
Subject: [PATCH] x86, olpc: Eliminate BUG_ON and memset after alloc_bootmem

alloc_bootmem and related functions never return NULL and always return
a zeroed region of memory. Thus a BUG_ON the NULL test or memset after
calls to these functions is unnecessary.

The following Coccinelle semantic patch was used for making the change:

@@
expression E;
statement S;
@@

E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\)(...)
... when != E
- BUG_ON (E == NULL);

@@
expression E,E1;
@@

E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\)(...)
... when != E
- memset(E,0,E1);

Signed-off-by: Himangi Saraogi <[email protected]>
Acked-by: Julia Lawall <[email protected]>
---
arch/x86/platform/olpc/olpc_dt.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/arch/x86/platform/olpc/olpc_dt.c b/arch/x86/platform/olpc/olpc_dt.c
index d6ee929..280645d 100644
--- a/arch/x86/platform/olpc/olpc_dt.c
+++ b/arch/x86/platform/olpc/olpc_dt.c
@@ -142,9 +142,7 @@ void * __init prom_early_alloc(unsigned long size)
* wasted bootmem) and hand off chunks of it to callers.
*/
res = alloc_bootmem(chunk_size);
- BUG_ON(!res);
prom_early_allocated += chunk_size;
- memset(res, 0, chunk_size);
free_mem = chunk_size;
mem = res;
}
--
1.9.1


2014-07-21 22:56:53

by David Rientjes

[permalink] [raw]
Subject: Re: [PATCH] x86, olpc: Eliminate BUG_ON and memset after alloc_bootmem

On Sat, 19 Jul 2014, Himangi Saraogi wrote:

> alloc_bootmem and related functions never return NULL and always return
> a zeroed region of memory. Thus a BUG_ON the NULL test or memset after
> calls to these functions is unnecessary.
>
> The following Coccinelle semantic patch was used for making the change:
>
> @@
> expression E;
> statement S;
> @@
>
> E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\)(...)
> ... when != E
> - BUG_ON (E == NULL);
>
> @@
> expression E,E1;
> @@
>
> E = \(alloc_bootmem\|alloc_bootmem_low\|alloc_bootmem_pages\|alloc_bootmem_low_pages\)(...)
> ... when != E
> - memset(E,0,E1);
>
> Signed-off-by: Himangi Saraogi <[email protected]>
> Acked-by: Julia Lawall <[email protected]>

Acked-by: David Rientjes <[email protected]>

Many callers of alloc_bootmem() do not check for the return value because
of this, there's no fallback available at this part in bootstrap so
there's nothing else that can be done.