|
@@ -691,6 +691,8 @@ static int sba_dma_supported( struct device *dev, u64 mask)
|
|
|
return 0;
|
|
|
|
|
|
ioc = GET_IOC(dev);
|
|
|
+ if (!ioc)
|
|
|
+ return 0;
|
|
|
|
|
|
/*
|
|
|
* check if mask is >= than the current max IO Virt Address
|
|
@@ -722,6 +724,8 @@ sba_map_single(struct device *dev, void *addr, size_t size,
|
|
|
int pide;
|
|
|
|
|
|
ioc = GET_IOC(dev);
|
|
|
+ if (!ioc)
|
|
|
+ return DMA_ERROR_CODE;
|
|
|
|
|
|
/* save offset bits */
|
|
|
offset = ((dma_addr_t) (long) addr) & ~IOVP_MASK;
|
|
@@ -813,6 +817,10 @@ sba_unmap_page(struct device *dev, dma_addr_t iova, size_t size,
|
|
|
DBG_RUN("%s() iovp 0x%lx/%x\n", __func__, (long) iova, size);
|
|
|
|
|
|
ioc = GET_IOC(dev);
|
|
|
+ if (!ioc) {
|
|
|
+ WARN_ON(!ioc);
|
|
|
+ return;
|
|
|
+ }
|
|
|
offset = iova & ~IOVP_MASK;
|
|
|
iova ^= offset; /* clear offset bits */
|
|
|
size += offset;
|
|
@@ -952,6 +960,8 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
|
|
DBG_RUN_SG("%s() START %d entries\n", __func__, nents);
|
|
|
|
|
|
ioc = GET_IOC(dev);
|
|
|
+ if (!ioc)
|
|
|
+ return 0;
|
|
|
|
|
|
/* Fast path single entry scatterlists. */
|
|
|
if (nents == 1) {
|
|
@@ -1037,6 +1047,10 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
|
|
__func__, nents, sg_virt(sglist), sglist->length);
|
|
|
|
|
|
ioc = GET_IOC(dev);
|
|
|
+ if (!ioc) {
|
|
|
+ WARN_ON(!ioc);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
#ifdef SBA_COLLECT_STATS
|
|
|
ioc->usg_calls++;
|