diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 75857cda38e989e5a44150c5abb9bd1bd4872957..728ef074602a69d6046e6ff68f10ea84bdc172cd 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -386,7 +386,7 @@ static inline void dma_free_attrs(struct device *dev, size_t size,
 	if (dma_release_from_coherent(dev, get_order(size), cpu_addr))
 		return;
 
-	if (!ops->free)
+	if (!ops->free || !cpu_addr)
 		return;
 
 	debug_dma_free_coherent(dev, size, cpu_addr, dma_handle);