diff --git a/drivers/of/address.c b/drivers/of/address.c index 397750f9f28a..dc9ff900cd3f 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -444,7 +444,8 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus, } if (ranges == NULL || rlen == 0) { offset = of_read_number(addr, na); - memset(addr, 0, pna * 4); + /* set address to zero, pass flags through */ + memset(addr + pbus->flag_cells, 0, (pna - pbus->flag_cells) * 4); pr_debug("empty ranges; 1:1 translation\n"); goto finish; }