forked from luck/tmp_suning_uos_patched
[PATCH] ppc64: firmware workaround
Recent gcc 4.0 testing uncovered a firmware issue. Some properties are larger than 31 bytes and due to gcc 4.0s better stack allocation this overflow ran over non volatile register storage. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
4b88e927e8
commit
c4005e4f66
@ -1555,6 +1555,12 @@ static void __init scan_dt_build_strings(phandle node, unsigned long *mem_start,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* The Open Firmware 1275 specification states properties must be 31 bytes or
|
||||
* less, however not all firmwares obey this. Make it 64 bytes to be safe.
|
||||
*/
|
||||
#define MAX_PROPERTY_NAME 64
|
||||
|
||||
static void __init scan_dt_build_struct(phandle node, unsigned long *mem_start,
|
||||
unsigned long *mem_end)
|
||||
{
|
||||
@ -1564,7 +1570,7 @@ static void __init scan_dt_build_struct(phandle node, unsigned long *mem_start,
|
||||
unsigned long soff;
|
||||
unsigned char *valp;
|
||||
unsigned long offset = reloc_offset();
|
||||
char pname[32];
|
||||
char pname[MAX_PROPERTY_NAME];
|
||||
char *path;
|
||||
|
||||
path = RELOC(prom_scratch);
|
||||
|
Loading…
Reference in New Issue
Block a user