omap_hsmmc: fix scatter-gather list sanity checking
Do not use host->dma_len when it is uninitialzed. Finish the request with an error if the mmc_omap_prepare_data() fails. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Adrian Hunter <adrian.hunter@nokia.com> Acked-by: Matt Fleming <matt@console-pimps.org> Cc: Ian Molton <ian@mnementh.co.uk> Cc: "Roberto A. Foglietta" <roberto.foglietta@gmail.com> Cc: Jarkko Lavinen <jarkko.lavinen@nokia.com> Cc: Denis Karpov <ext-denis.2.karpov@nokia.com> Cc: Pierre Ossman <pierre@ossman.eu> Cc: Philip Langdale <philipl@overt.org> Cc: "Madhusudhan" <madhu.cr@ti.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									a6b2240da2
								
							
						
					
					
						commit
						a3f406f861
					
				| @ -878,7 +878,7 @@ mmc_omap_start_dma_transfer(struct mmc_omap_host *host, struct mmc_request *req) | ||||
| 	struct mmc_data *data = req->data; | ||||
| 
 | ||||
| 	/* Sanity check: all the SG entries must be aligned by block size. */ | ||||
| 	for (i = 0; i < host->dma_len; i++) { | ||||
| 	for (i = 0; i < data->sg_len; i++) { | ||||
| 		struct scatterlist *sgl; | ||||
| 
 | ||||
| 		sgl = data->sg + i; | ||||
| @ -1021,10 +1021,20 @@ static int omap_mmc_disable(struct mmc_host *mmc, int lazy) | ||||
| static void omap_mmc_request(struct mmc_host *mmc, struct mmc_request *req) | ||||
| { | ||||
| 	struct mmc_omap_host *host = mmc_priv(mmc); | ||||
| 	int err; | ||||
| 
 | ||||
| 	WARN_ON(host->mrq != NULL); | ||||
| 	host->mrq = req; | ||||
| 	mmc_omap_prepare_data(host, req); | ||||
| 	err = mmc_omap_prepare_data(host, req); | ||||
| 	if (err) { | ||||
| 		req->cmd->error = err; | ||||
| 		if (req->data) | ||||
| 			req->data->error = err; | ||||
| 		host->mrq = NULL; | ||||
| 		mmc_request_done(mmc, req); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	mmc_omap_start_command(host, req->cmd, req->data); | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user