[PATCH v2 07/11] staging: mt7621-mmc: Check for nonzero number of scatterlist entries

From: George Hilliard
Date: Mon Mar 18 2019 - 22:21:05 EST


The buffer descriptor setup loop is correct only if it is setting up at
least one bd struct. Besides, there is an error somewhere if
dma_map_sg() returns 0. So add a paranoid check for this condition.

Signed-off-by: George Hilliard <thirtythreeforty@xxxxxxxxx>
---
drivers/staging/mt7621-mmc/sd.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/mt7621-mmc/sd.c b/drivers/staging/mt7621-mmc/sd.c
index c272aa780719..31c5b44bd29f 100644
--- a/drivers/staging/mt7621-mmc/sd.c
+++ b/drivers/staging/mt7621-mmc/sd.c
@@ -593,7 +593,12 @@ static void msdc_dma_setup(struct msdc_host *host, struct msdc_dma *dma,
struct bd *bd;
u32 j;

- BUG_ON(sglen > MAX_BD_NUM); /* not support currently */
+ // Shouldn't happen; we configure the mmc host layer
+ // based on MAX_BD_NUM:
+ BUG_ON(sglen > MAX_BD_NUM);
+ // Correct setup below requires at least one bd
+ // (and dma_map_sg should not return 0):
+ BUG_ON(sglen == 0);

gpd = dma->gpd;
bd = dma->bd;
--
2.21.0