lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1352379984-18381-14-git-send-email-dragos.tatulea@intel.com>
Date:	Thu,  8 Nov 2012 15:06:11 +0200
From:	dragos.tatulea@...el.com
To:	linux-kernel@...r.kernel.org, linux-mmc@...r.kernel.org,
	cjb@...top.org
Cc:	kirill.shutemov@...ux.intel.com, irina.tirdea@...el.com,
	octavian.purdila@...el.com, tony.luck@...el.com,
	keescook@...omium.org, dragos.tatulea@...il.com,
	Adrian Hunter <adrian.hunter@...el.com>
Subject: [PATCH v2 13/26] mmc: panic write: trap non panic tasks

From: Adrian Hunter <adrian.hunter@...el.com>

If in panic, wait for task to come into context.

Signed-off-by: Adrian Hunter <adrian.hunter@...el.com>
Signed-off-by: Irina Tirdea <irina.tirdea@...el.com>
---
 drivers/mmc/core/core.c |   10 +++++++++-
 drivers/mmc/core/host.c |    2 ++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index d3caa7e..4fd7061 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -252,6 +252,7 @@ mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
 	}
 	mmc_host_clk_hold(host);
 	led_trigger_event(host->led, LED_FULL);
+	mmc_trap_nonpanic_tasks(host);
 	host->ops->request(host, mrq);
 }
 
@@ -344,8 +345,10 @@ static void mmc_wait_for_req_done(struct mmc_host *host,
 
 	while (1) {
 		/* Panic task requests must be completed in ->request() */
-		if (!mmc_am_panic_task(host))
+		if (!mmc_am_panic_task(host)) {
 			wait_for_completion(&mrq->completion);
+			mmc_trap_nonpanic_tasks(host);
+		}
 
 		cmd = mrq->cmd;
 		if (!cmd->error || !cmd->retries ||
@@ -774,6 +777,8 @@ int __mmc_claim_host(struct mmc_host *host, atomic_t *abort)
 
 	if (mmc_am_panic_task(host))
 		return 0;
+	else
+		mmc_trap_nonpanic_tasks(host);
 
 	might_sleep();
 
@@ -817,6 +822,8 @@ int mmc_try_claim_host(struct mmc_host *host)
 
 	if (mmc_am_panic_task(host))
 		return 1;
+	else
+		mmc_trap_nonpanic_tasks(host);
 
 	spin_lock_irqsave(&host->lock, flags);
 	if (!host->claimed || host->claimer == current) {
@@ -880,6 +887,7 @@ static inline void mmc_set_ios(struct mmc_host *host)
 
 	if (ios->clock > 0)
 		mmc_set_ungated(host);
+	mmc_trap_nonpanic_tasks(host);
 	host->ops->set_ios(host, ios);
 }
 
diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
index 6eda5a1..b76bfc8 100644
--- a/drivers/mmc/core/host.c
+++ b/drivers/mmc/core/host.c
@@ -90,6 +90,8 @@ static void mmc_host_clk_gate_delayed(struct mmc_host *host)
 	unsigned long freq = host->ios.clock;
 	unsigned long flags;
 
+	mmc_trap_nonpanic_tasks(host);
+
 	if (!freq) {
 		pr_debug("%s: frequency set to 0 in disable function, "
 			 "this means the clock is already disabled.\n",
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ