Thread (2 messages) 2 messages, 2 authors, 2020-08-14

Re: [PATCH][V2] of/address: check for invalid range.cpu_addr

From: Rob Herring <robh+dt@kernel.org>
Date: 2020-08-14 19:48:40
Also in: kernel-janitors, lkml

On Thu, Aug 13, 2020 at 5:43 AM Colin King [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Colin Ian King <redacted>

Currently invalid CPU addresses are not being sanity checked resulting in
SATA setup failure on a SynQuacer SC2A11 development machine. The original
check was removed by and earlier commit, so add a sanity check back in
to avoid this regression.

Fixes: 7a8b64d17e35 ("of/address: use range parser for of_dma_get_range")
Signed-off-by: Colin Ian King <redacted>
---
 drivers/of/address.c | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/drivers/of/address.c b/drivers/of/address.c
index 590493e04b01..6ffbf7b99e92 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -985,6 +985,10 @@ int of_dma_get_range(struct device_node *np, u64 *dma_addr, u64 *paddr, u64 *siz
                        /* Don't error out as we'd break some existing DTs */
                        continue;
                }
+               if (range.cpu_addr == OF_BAD_ADDR) {
+                       pr_err("Translation of CPU address failed on node (%pOF)\n", node);
+                       continue;
+               }
                dma_offset = range.cpu_addr - range.bus_addr;

                /* Take lower and upper limits */
--
V2: print message using pr_err and don't print range.cpu_addr as it's always
    going to be OF_BAD_ADDR so the information is pointless.
Shouldn't we print the bus_addr like the original message did?
Otherwise, we don't really know what entry is problematic.

Rob
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help