u64 dma_align = (u64)(uintptr_t)xqspi->rxbuf;
if (((xqspi->bytes_to_receive < 8) || (xqspi->io_mode)) ||
- ((dma_align & GQSPI_DMA_UNALIGN) != 0x0)) {
+ ((dma_align & GQSPI_DMA_UNALIGN) != 0x0) ||
+ is_vmalloc_addr(xqspi->rxbuf)) {
/* Setting to IO mode */
config_reg = zynqmp_gqspi_read(xqspi, GQSPI_CONFIG_OFST);
config_reg &= ~GQSPI_CFG_MODE_EN_MASK;
addr = dma_map_single(xqspi->dev, (void *)xqspi->rxbuf,
rx_bytes, DMA_FROM_DEVICE);
- if (dma_mapping_error(xqspi->dev, addr))
+ if (dma_mapping_error(xqspi->dev, addr)) {
dev_err(xqspi->dev, "ERR:rxdma:memory not mapped\n");
+ return;
+ }
xqspi->dma_rx_bytes = rx_bytes;
xqspi->dma_addr = addr;