]> www.infradead.org Git - users/jedix/linux-maple.git/commit
mmc: sdhci: fix dma memory leak in sdhci_pre_req()
authorHaibo Chen <haibo.chen@freescale.com>
Tue, 25 Aug 2015 02:02:11 +0000 (10:02 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Oct 2015 21:43:24 +0000 (14:43 -0700)
commitc1d40e01ad8c01eb36557dab69cefd972f5f0415
tree963e4eea6f9533d97bdca606dfdb3c04fa4af0e2
parentef110859613fdbe6e866b09c3b2fd9081faa25dd
mmc: sdhci: fix dma memory leak in sdhci_pre_req()

commit d31911b9374a76560d2c8ea4aa6ce5781621e81d upstream.

Currently one mrq->data maybe execute dma_map_sg() twice
when mmc subsystem prepare over one new request, and the
following log show up:
sdhci[sdhci_pre_dma_transfer] invalid cookie: 24, next-cookie 25

In this condition, mrq->date map a dma-memory(1) in sdhci_pre_req
for the first time, and map another dma-memory(2) in sdhci_prepare_data
for the second time. But driver only unmap the dma-memory(2), and
dma-memory(1) never unmapped, which cause the dma memory leak issue.

This patch use another method to map the dma memory for the mrq->data
which can fix this dma memory leak issue.

Fixes: 348487cb28e6 ("mmc: sdhci: use pipeline mmc requests to improve performance")
Reported-and-tested-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Haibo Chen <haibo.chen@freescale.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mmc/host/sdhci.c
drivers/mmc/host/sdhci.h
include/linux/mmc/core.h