diff options
| -rw-r--r-- | drivers/spi/spi.c | 4 |
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); |
