mirror of https://gitee.com/openkylin/linux.git
mmc: sdhci: Clear unused bounce buffer at DMA mmap error path
When DMA-mapping of the bounce buffer fails, the driver tries to fall back, but it leaves the allocated host->bounce_buffer although its size is zero. Later on, the driver checks the use of bounce buffer with host->bounce_buffer pointer, and it tries to use the buffer incorrectly, resulting in Oops. This patch clears the release the unused buffer and clears the bounce_buffer pointer for addressing the problem. Acked-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://lore.kernel.org/r/20210611101948.18972-1-tiwai@suse.de Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
2f2b73a29d
commit
49036ba889
|
@ -4072,9 +4072,13 @@ static void sdhci_allocate_bounce_buffer(struct sdhci_host *host)
|
|||
bounce_size,
|
||||
DMA_BIDIRECTIONAL);
|
||||
ret = dma_mapping_error(mmc_dev(mmc), host->bounce_addr);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
devm_kfree(mmc_dev(mmc), host->bounce_buffer);
|
||||
host->bounce_buffer = NULL;
|
||||
/* Again fall back to max_segs == 1 */
|
||||
return;
|
||||
}
|
||||
|
||||
host->bounce_buffer_size = bounce_size;
|
||||
|
||||
/* Lie about this since we're bouncing */
|
||||
|
|
Loading…
Reference in New Issue