aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-04-12 13:59:03 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-04-12 13:59:03 -0400
commitd1cb7718cfe3a464189cb3d1ee2c092565bc8b39 (patch)
tree88dc6a5d23c47b706be9295d4f222cdc88914ded
parentcb098d50ecc0a4729507ddcc7f4ae98c3703fadd (diff)
parentfc167daff581c01ebce8695e9618231cae3561a1 (diff)
Merge tag 'mmc-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
Pull MMC fixes from Ulf Hansson: "MMC core: - Prevent bus reference leak in mmc_blk_init() MMC host: - tmio: Fix error handling when issuing CMD23 - jz4740: Fix race condition in IRQ mask update" * tag 'mmc-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: mmc: tmio: Fix error handling when issuing CMD23 mmc: core: Prevent bus reference leak in mmc_blk_init() mmc: jz4740: Fix race condition in IRQ mask update
-rw-r--r--drivers/mmc/core/block.c1
-rw-r--r--drivers/mmc/host/jz4740_mmc.c2
-rw-r--r--drivers/mmc/host/tmio_mmc_core.c2
3 files changed, 3 insertions, 2 deletions
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index 02485e310c81..9e923cd1d80e 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -3080,6 +3080,7 @@ static void __exit mmc_blk_exit(void)
3080 mmc_unregister_driver(&mmc_driver); 3080 mmc_unregister_driver(&mmc_driver);
3081 unregister_blkdev(MMC_BLOCK_MAJOR, "mmc"); 3081 unregister_blkdev(MMC_BLOCK_MAJOR, "mmc");
3082 unregister_chrdev_region(mmc_rpmb_devt, MAX_DEVICES); 3082 unregister_chrdev_region(mmc_rpmb_devt, MAX_DEVICES);
3083 bus_unregister(&mmc_rpmb_bus_type);
3083} 3084}
3084 3085
3085module_init(mmc_blk_init); 3086module_init(mmc_blk_init);
diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c
index 712e08d9a45e..a0168e9e4fce 100644
--- a/drivers/mmc/host/jz4740_mmc.c
+++ b/drivers/mmc/host/jz4740_mmc.c
@@ -362,9 +362,9 @@ static void jz4740_mmc_set_irq_enabled(struct jz4740_mmc_host *host,
362 host->irq_mask &= ~irq; 362 host->irq_mask &= ~irq;
363 else 363 else
364 host->irq_mask |= irq; 364 host->irq_mask |= irq;
365 spin_unlock_irqrestore(&host->lock, flags);
366 365
367 writew(host->irq_mask, host->base + JZ_REG_MMC_IMASK); 366 writew(host->irq_mask, host->base + JZ_REG_MMC_IMASK);
367 spin_unlock_irqrestore(&host->lock, flags);
368} 368}
369 369
370static void jz4740_mmc_clock_enable(struct jz4740_mmc_host *host, 370static void jz4740_mmc_clock_enable(struct jz4740_mmc_host *host,
diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c
index e30df9ad8197..308029930304 100644
--- a/drivers/mmc/host/tmio_mmc_core.c
+++ b/drivers/mmc/host/tmio_mmc_core.c
@@ -913,7 +913,7 @@ static void tmio_mmc_finish_request(struct tmio_mmc_host *host)
913 host->check_scc_error(host); 913 host->check_scc_error(host);
914 914
915 /* If SET_BLOCK_COUNT, continue with main command */ 915 /* If SET_BLOCK_COUNT, continue with main command */
916 if (host->mrq) { 916 if (host->mrq && !mrq->cmd->error) {
917 tmio_process_mrq(host, mrq); 917 tmio_process_mrq(host, mrq);
918 return; 918 return;
919 } 919 }