浏览代码

Merge remote-tracking branch 'spi/fix/dma' into spi-linus

Mark Brown 7 年之前
父节点
当前提交
43ff2dcef0
共有 1 个文件被更改,包括 8 次插入2 次删除
  1. 8 2
      drivers/spi/spi.c

+ 8 - 2
drivers/spi/spi.c

@@ -779,8 +779,14 @@ static int spi_map_buf(struct spi_controller *ctlr, struct device *dev,
 	for (i = 0; i < sgs; i++) {
 
 		if (vmalloced_buf || kmap_buf) {
-			min = min_t(size_t,
-				    len, desc_len - offset_in_page(buf));
+			/*
+			 * Next scatterlist entry size is the minimum between
+			 * the desc_len and the remaining buffer length that
+			 * fits in a page.
+			 */
+			min = min_t(size_t, desc_len,
+				    min_t(size_t, len,
+					  PAGE_SIZE - offset_in_page(buf)));
 			if (vmalloced_buf)
 				vm_page = vmalloc_to_page(buf);
 			else