summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Saenz Julienne <nsaenzjulienne@suse.de>2020-07-31 12:02:48 +0200
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>2020-07-31 17:43:07 +0200
commitc3028b951ed15b7c3409c6d9a69dad615de23d3f (patch)
tree0b91bbd860d580e55e6cab7ed438c63a37fabd77
parent0fc0ead3488836503573286bcaa56f9743ea2bcc (diff)
downloadlinux-c3028b951ed15b7c3409c6d9a69dad615de23d3f.tar.bz2
of: address: Fix parser address/size cells initialization
bus->count_cells() parses cells starting from the node's parent. This is not good enough for parser_init() which is generally parsing a bus node. Revert to previous behavior using of_bus_n_*_cells(). Fixes: 2f96593ecc37 ("of_address: Add bus type match for pci ranges parser") Reported-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
-rw-r--r--drivers/of/address.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/of/address.c b/drivers/of/address.c
index 157dc7e06077..df471d171a29 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -701,11 +701,11 @@ static int parser_init(struct of_pci_range_parser *parser,
parser->node = node;
parser->pna = of_n_addr_cells(node);
+ parser->na = of_bus_n_addr_cells(node);
+ parser->ns = of_bus_n_size_cells(node);
parser->dma = !strcmp(name, "dma-ranges");
parser->bus = of_match_bus(node);
- parser->bus->count_cells(parser->node, &parser->na, &parser->ns);
-
parser->range = of_get_property(node, name, &rlen);
if (parser->range == NULL)
return -ENOENT;