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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1429735986-18592-3-git-send-email-heiko@sntech.de>
Date:	Wed, 22 Apr 2015 22:53:06 +0200
From:	Heiko Stuebner <heiko@...ech.de>
To:	mturquette@...aro.org, sboyd@...eaurora.org
Cc:	dianders@...omium.org, linux-clk@...r.kernel.org,
	linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
	Heiko Stuebner <heiko@...ech.de>,
	Boris Brezillon <boris.brezillon@...e-electrons.com>,
	Alex Elder <elder@...aro.org>,
	Alexandre Belloni <alexandre.belloni@...e-electrons.com>,
	Stephen Warren <swarren@...dotorg.org>,
	Max Filippov <jcmvbkbc@...il.com>, kernel@...gutronix.de,
	Zhangfei Gao <zhangfei.gao@...aro.org>,
	Santosh Shilimkar <ssantosh@...nel.org>,
	Chao Xie <chao.xie@...vell.com>,
	Jason Cooper <jason@...edaemon.net>,
	Stefan Wahren <stefan.wahren@...e.com>,
	Andrew Bresticker <abrestic@...omium.org>,
	Robert Jarzmik <robert.jarzmik@...e.fr>,
	Georgi Djakov <georgi.djakov@...aro.org>,
	Sylwester Nawrocki <s.nawrocki@...sung.com>,
	Geert Uytterhoeven <geert+renesas@...der.be>,
	Barry Song <baohua@...nel.org>,
	Dinh Nguyen <dinguyen@...nsource.altera.com>,
	Viresh Kumar <viresh.linux@...il.com>,
	Gabriel FERNANDEZ <gabriel.fernandez@...com>,
	emilio@...pez.com.ar, Peter De Schrijver <pdeschrijver@...dia.com>,
	Tero Kristo <t-kristo@...com>,
	Ulf Hansson <ulf.hansson@...aro.org>,
	Pawel Moll <pawel.moll@....com>,
	Michal Simek <michal.simek@...inx.com>
Subject: [PATCH v3 2/2] clk: prevent orphan clocks from being used

Orphan clocks or children of orphan clocks don't have rate information at
all and can produce strange results if they're allowed to be used and the
parent becomes available later on.

So using the newly introduced orphan status bit defer
__of_clk_get_from_provider calls for orphan clocks.

Signed-off-by: Heiko Stuebner <heiko@...ech.de>
Cc: Boris Brezillon <boris.brezillon@...e-electrons.com>
Cc: Alex Elder <elder@...aro.org>
Cc: Alexandre Belloni <alexandre.belloni@...e-electrons.com>
Cc: Stephen Warren <swarren@...dotorg.org>
Cc: Max Filippov <jcmvbkbc@...il.com>
Cc: kernel@...gutronix.de
Cc: Zhangfei Gao <zhangfei.gao@...aro.org>
Cc: Santosh Shilimkar <ssantosh@...nel.org>
Cc: Chao Xie <chao.xie@...vell.com>
Cc: Jason Cooper <jason@...edaemon.net>
Cc: Stefan Wahren <stefan.wahren@...e.com>
Cc: Andrew Bresticker <abrestic@...omium.org>
Cc: Robert Jarzmik <robert.jarzmik@...e.fr>
Cc: Georgi Djakov <georgi.djakov@...aro.org>
Cc: Sylwester Nawrocki <s.nawrocki@...sung.com>
Cc: Geert Uytterhoeven <geert+renesas@...der.be>
Cc: Barry Song <baohua@...nel.org>
Cc: Dinh Nguyen <dinguyen@...nsource.altera.com>
Cc: Viresh Kumar <viresh.linux@...il.com>
Cc: Gabriel FERNANDEZ <gabriel.fernandez@...com>
Cc: emilio@...pez.com.ar
Cc: Peter De Schrijver <pdeschrijver@...dia.com>
Cc: Tero Kristo <t-kristo@...com>
Cc: Ulf Hansson <ulf.hansson@...aro.org>
Cc: Pawel Moll <pawel.moll@....com>
Cc: Michal Simek <michal.simek@...inx.com>
---
 drivers/clk/clk.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 341904f..27d2d4b 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -2226,6 +2226,14 @@ bool clk_is_match(const struct clk *p, const struct clk *q)
 }
 EXPORT_SYMBOL_GPL(clk_is_match);
 
+static bool clk_is_orphan(const struct clk *clk)
+{
+	if (!clk)
+		return false;
+
+	return clk->core->orphan;
+}
+
 /**
  * __clk_init - initialize the data structures in a struct clk
  * @dev:	device initializing this clk, placeholder for now
@@ -2968,6 +2976,11 @@ struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec,
 		if (provider->node == clkspec->np)
 			clk = provider->get(clkspec, provider->data);
 		if (!IS_ERR(clk)) {
+			if (clk_is_orphan(clk)) {
+				clk = ERR_PTR(-EPROBE_DEFER);
+				break;
+			}
+
 			clk = __clk_create_clk(__clk_get_hw(clk), dev_id,
 					       con_id);
 
-- 
2.1.4

--
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