[3.13.y.z extended stable] Patch "mmc: tmio: prevent endless loop in tmio_mmc_set_clock()" has been added to staging queue
Kamal Mostafa
kamal at canonical.com
Tue Oct 21 20:09:13 UTC 2014
This is a note to let you know that I have just added a patch titled
mmc: tmio: prevent endless loop in tmio_mmc_set_clock()
to the linux-3.13.y-queue branch of the 3.13.y.z extended stable tree
which can be found at:
http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.13.y-queue
This patch is scheduled to be released in version 3.13.11.10.
If you, or anyone else, feels it should not be added to this tree, please
reply to this email.
For more information about the 3.13.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable
Thanks.
-Kamal
------
>From c517d595f180778aedb57c12b723b585fb5afeea Mon Sep 17 00:00:00 2001
From: Sergei Shtylyov <sergei.shtylyov at cogentembedded.com>
Date: Thu, 18 Sep 2014 23:33:49 +0400
Subject: mmc: tmio: prevent endless loop in tmio_mmc_set_clock()
commit bb98d9d1d2e791f368295c9c09c9a03fe3ac0e62 upstream.
I spent a couple of days with the driver just hanging due to me forgetting to
specify the external crystal frequency, so that clk_get_rate() returned 0 and
thus the loop in tmio_mmc_set_clock() never ended. I don't think that's an
acceptable behavior, so I suggest that the minimum frequency is checked for 0
in tmio_mmc_host_probe().
Signed-off-by: Sergei Shtylyov <sergei.shtylyov at cogentembedded.com>
Acked-by: Ian Molton <ian.molton at codethink.co.uk>
Signed-off-by: Ulf Hansson <ulf.hansson at linaro.org>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
drivers/mmc/host/tmio_mmc_pio.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
index f3b2d8c..51add7f 100644
--- a/drivers/mmc/host/tmio_mmc_pio.c
+++ b/drivers/mmc/host/tmio_mmc_pio.c
@@ -1042,6 +1042,15 @@ int tmio_mmc_host_probe(struct tmio_mmc_host **host,
}
/*
+ * Check the sanity of mmc->f_min to prevent tmio_mmc_set_clock() from
+ * looping forever...
+ */
+ if (mmc->f_min == 0) {
+ ret = -EINVAL;
+ goto host_free;
+ }
+
+ /*
* There are 4 different scenarios for the card detection:
* 1) an external gpio irq handles the cd (best for power savings)
* 2) internal sdhi irq handles the cd
--
1.9.1
More information about the kernel-team
mailing list