aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/spi/spi.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 6c4c050e6b65..a50f880a5036 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -717,9 +717,11 @@ static int spi_map_buf(struct spi_master *master, struct device *dev,
717 if (vmalloced_buf) { 717 if (vmalloced_buf) {
718 desc_len = min_t(int, max_seg_size, PAGE_SIZE); 718 desc_len = min_t(int, max_seg_size, PAGE_SIZE);
719 sgs = DIV_ROUND_UP(len + offset_in_page(buf), desc_len); 719 sgs = DIV_ROUND_UP(len + offset_in_page(buf), desc_len);
720 } else { 720 } else if (virt_addr_valid(buf)) {
721 desc_len = min_t(int, max_seg_size, master->max_dma_len); 721 desc_len = min_t(int, max_seg_size, master->max_dma_len);
722 sgs = DIV_ROUND_UP(len, desc_len); 722 sgs = DIV_ROUND_UP(len, desc_len);
723 } else {
724 return -EINVAL;
723 } 725 }
724 726
725 ret = sg_alloc_table(sgt, sgs, GFP_KERNEL); 727 ret = sg_alloc_table(sgt, sgs, GFP_KERNEL);