On Sun, Aug 26, 2018 at 11:53 PM Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote: > > On Thu, Aug 23, 2018 at 08:05:09PM -0700, Andrey Smirnov wrote: > > On 64-bit SoCs it becomes possible to end up with a DMA buffer > > allocated in the region of memory inaccessible to ESDHC > > controller. Change the code to bail out if that happens to avoid > > silent failures. > > > > Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> > > --- > > drivers/mci/imx-esdhc.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/mci/imx-esdhc.c b/drivers/mci/imx-esdhc.c > > index db96a8139..f6451e204 100644 > > --- a/drivers/mci/imx-esdhc.c > > +++ b/drivers/mci/imx-esdhc.c > > @@ -304,6 +304,9 @@ esdhc_send_cmd(struct mci_host *mci, struct mci_cmd *cmd, struct mci_data *data) > > dma = dma_map_single(host->dev, ptr, num_bytes, dir); > > if (dma_mapping_error(host->dev, dma)) > > return -EIO; > > + > > + if (dma > U32_MAX) > > + return -EFAULT; > > } > > If struct device_d had a dma_mask member, it could be initialized by the > esdhc driver probe function and dma_map_single() would already fail on > addresses > 32bit without additional checks. > > That's what Linux does and I think we should do the same. > Good idea, will do in v2. Thanks, Andrey Smirnov _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox