diff mbox

[3.16.y-ckt,stable] Patch "avr32: handle NULL as a valid clock object" has been added to staging queue

Message ID 1440673937-13316-1-git-send-email-luis.henriques@canonical.com
State New
Headers show

Commit Message

Luis Henriques Aug. 27, 2015, 11:12 a.m. UTC
This is a note to let you know that I have just added a patch titled

    avr32: handle NULL as a valid clock object

to the linux-3.16.y-queue branch of the 3.16.y-ckt extended stable tree 
which can be found at:

    http://kernel.ubuntu.com/git/ubuntu/linux.git/log/?h=linux-3.16.y-queue

This patch is scheduled to be released in version 3.16.7-ckt17.

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.16.y-ckt tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable

Thanks.
-Luis

------

From 4697b1994cb8a78c6c692caf3b5a94709381784d Mon Sep 17 00:00:00 2001
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: Fri, 24 Jul 2015 13:49:48 +0300
Subject: avr32: handle NULL as a valid clock object

commit 5c02a4206538da12c040b51778d310df84c6bf6c upstream.

Since NULL is used as valid clock object on optional clocks we have to handle
this case in avr32 implementation as well.

Fixes: e1824dfe0d8e (net: macb: Adjust tx_clk when link speed changes)
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 arch/avr32/mach-at32ap/clock.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/arch/avr32/mach-at32ap/clock.c b/arch/avr32/mach-at32ap/clock.c
index 23b1a97fae7a..52c179bec0cc 100644
--- a/arch/avr32/mach-at32ap/clock.c
+++ b/arch/avr32/mach-at32ap/clock.c
@@ -80,6 +80,9 @@  int clk_enable(struct clk *clk)
 {
 	unsigned long flags;

+	if (!clk)
+		return 0;
+
 	spin_lock_irqsave(&clk_lock, flags);
 	__clk_enable(clk);
 	spin_unlock_irqrestore(&clk_lock, flags);
@@ -106,6 +109,9 @@  void clk_disable(struct clk *clk)
 {
 	unsigned long flags;

+	if (IS_ERR_OR_NULL(clk))
+		return;
+
 	spin_lock_irqsave(&clk_lock, flags);
 	__clk_disable(clk);
 	spin_unlock_irqrestore(&clk_lock, flags);
@@ -117,6 +123,9 @@  unsigned long clk_get_rate(struct clk *clk)
 	unsigned long flags;
 	unsigned long rate;

+	if (!clk)
+		return 0;
+
 	spin_lock_irqsave(&clk_lock, flags);
 	rate = clk->get_rate(clk);
 	spin_unlock_irqrestore(&clk_lock, flags);
@@ -129,6 +138,9 @@  long clk_round_rate(struct clk *clk, unsigned long rate)
 {
 	unsigned long flags, actual_rate;

+	if (!clk)
+		return 0;
+
 	if (!clk->set_rate)
 		return -ENOSYS;

@@ -145,6 +157,9 @@  int clk_set_rate(struct clk *clk, unsigned long rate)
 	unsigned long flags;
 	long ret;

+	if (!clk)
+		return 0;
+
 	if (!clk->set_rate)
 		return -ENOSYS;

@@ -161,6 +176,9 @@  int clk_set_parent(struct clk *clk, struct clk *parent)
 	unsigned long flags;
 	int ret;

+	if (!clk)
+		return 0;
+
 	if (!clk->set_parent)
 		return -ENOSYS;

@@ -174,7 +192,7 @@  EXPORT_SYMBOL(clk_set_parent);

 struct clk *clk_get_parent(struct clk *clk)
 {
-	return clk->parent;
+	return !clk ? NULL : clk->parent;
 }
 EXPORT_SYMBOL(clk_get_parent);