mmc: enforce correct sg list

Now that we've fixed our only offender when it comes to strange sg
list, add a check so that future users keep the sg list proper with
regard to transfer size.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 4a73e8b..e8f896c 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -99,6 +99,10 @@
 void
 mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
 {
+#ifdef CONFIG_MMC_DEBUG
+	unsigned int i, sz;
+#endif
+
 	pr_debug("%s: starting CMD%u arg %08x flags %08x\n",
 		 mmc_hostname(host), mrq->cmd->opcode,
 		 mrq->cmd->arg, mrq->cmd->flags);
@@ -113,6 +117,13 @@
 		BUG_ON(mrq->data->blocks * mrq->data->blksz >
 			host->max_req_size);
 
+#ifdef CONFIG_MMC_DEBUG
+		sz = 0;
+		for (i = 0;i < mrq->data->sg_len;i++)
+			sz += mrq->data->sg[i].length;
+		BUG_ON(sz != mrq->data->blocks * mrq->data->blksz);
+#endif
+
 		mrq->cmd->data = mrq->data;
 		mrq->data->error = 0;
 		mrq->data->mrq = mrq;