[SPARC]: Fix EBUS use of uninitialized variable.
If of_get_property() fails, it returns NULL and the 'len' parameter is undefined. So we need to explicitly set len to zero in such cases. Noticed by Al Viro. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ff0ce6845b
commit
9c908f97d0
|
@ -156,6 +156,8 @@ void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *d
|
||||||
dev->prom_node = dp;
|
dev->prom_node = dp;
|
||||||
|
|
||||||
regs = of_get_property(dp, "reg", &len);
|
regs = of_get_property(dp, "reg", &len);
|
||||||
|
if (!regs)
|
||||||
|
len = 0;
|
||||||
if (len % sizeof(struct linux_prom_registers)) {
|
if (len % sizeof(struct linux_prom_registers)) {
|
||||||
prom_printf("UGH: proplen for %s was %d, need multiple of %d\n",
|
prom_printf("UGH: proplen for %s was %d, need multiple of %d\n",
|
||||||
dev->prom_node->name, len,
|
dev->prom_node->name, len,
|
||||||
|
|
|
@ -375,7 +375,10 @@ static void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_de
|
||||||
dev->num_addrs = 0;
|
dev->num_addrs = 0;
|
||||||
dev->num_irqs = 0;
|
dev->num_irqs = 0;
|
||||||
} else {
|
} else {
|
||||||
(void) of_get_property(dp, "reg", &len);
|
const int *regs = of_get_property(dp, "reg", &len);
|
||||||
|
|
||||||
|
if (!regs)
|
||||||
|
len = 0;
|
||||||
dev->num_addrs = len / sizeof(struct linux_prom_registers);
|
dev->num_addrs = len / sizeof(struct linux_prom_registers);
|
||||||
|
|
||||||
for (i = 0; i < dev->num_addrs; i++)
|
for (i = 0; i < dev->num_addrs; i++)
|
||||||
|
|
Loading…
Reference in a new issue