diff mbox

[Vivid,SRU] ipmi/powernv: Fix minor locking bug

Message ID 1441730585-25851-1-git-send-email-tim.gardner@canonical.com
State New
Headers show

Commit Message

Tim Gardner Sept. 8, 2015, 4:43 p.m. UTC
From: Alistair Popple <alistair@popple.id.au>

BugLink: http://bugs.launchpad.net/bugs/1493017

If ipmi_powernv_recv(...) is called without a current message it
prints a warning and returns. However it fails to release the message
lock causing the system to dead lock during any subsequent IPMI
operations.

This error path should never normally be taken unless there are bugs
elsewhere in the system.

Signed-off-by: Alistair Popple <alistair@popple.id.au>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
(cherry picked from commit ad1ed2a9dd4c435d6a3ce470211db9a8d107c3e0)
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
---
 drivers/char/ipmi/ipmi_powernv.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Chris J Arges Sept. 8, 2015, 4:56 p.m. UTC | #1
On 09/08/2015 11:43 AM, tim.gardner@canonical.com wrote:
> From: Alistair Popple <alistair@popple.id.au>
> 
> BugLink: http://bugs.launchpad.net/bugs/1493017
> 
> If ipmi_powernv_recv(...) is called without a current message it
> prints a warning and returns. However it fails to release the message
> lock causing the system to dead lock during any subsequent IPMI
> operations.
> 
> This error path should never normally be taken unless there are bugs
> elsewhere in the system.
> 
> Signed-off-by: Alistair Popple <alistair@popple.id.au>
> Signed-off-by: Corey Minyard <cminyard@mvista.com>
> (cherry picked from commit ad1ed2a9dd4c435d6a3ce470211db9a8d107c3e0)
> Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
> ---
>  drivers/char/ipmi/ipmi_powernv.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c
> index 79524ed..8753b0f 100644
> --- a/drivers/char/ipmi/ipmi_powernv.c
> +++ b/drivers/char/ipmi/ipmi_powernv.c
> @@ -125,6 +125,7 @@ static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi)
>  	spin_lock_irqsave(&smi->msg_lock, flags);
>  
>  	if (!smi->cur_msg) {
> +		spin_unlock_irqrestore(&smi->msg_lock, flags);
>  		pr_warn("no current message?\n");
>  		return 0;
>  	}
>
Brad Figg Sept. 8, 2015, 5:08 p.m. UTC | #2
On Tue, Sep 08, 2015 at 10:43:05AM -0600, tim.gardner@canonical.com wrote:
> From: Alistair Popple <alistair@popple.id.au>
> 
> BugLink: http://bugs.launchpad.net/bugs/1493017
> 
> If ipmi_powernv_recv(...) is called without a current message it
> prints a warning and returns. However it fails to release the message
> lock causing the system to dead lock during any subsequent IPMI
> operations.
> 
> This error path should never normally be taken unless there are bugs
> elsewhere in the system.
> 
> Signed-off-by: Alistair Popple <alistair@popple.id.au>
> Signed-off-by: Corey Minyard <cminyard@mvista.com>
> (cherry picked from commit ad1ed2a9dd4c435d6a3ce470211db9a8d107c3e0)
> Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
> ---
>  drivers/char/ipmi/ipmi_powernv.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c
> index 79524ed..8753b0f 100644
> --- a/drivers/char/ipmi/ipmi_powernv.c
> +++ b/drivers/char/ipmi/ipmi_powernv.c
> @@ -125,6 +125,7 @@ static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi)
>  	spin_lock_irqsave(&smi->msg_lock, flags);
>  
>  	if (!smi->cur_msg) {
> +		spin_unlock_irqrestore(&smi->msg_lock, flags);
>  		pr_warn("no current message?\n");
>  		return 0;
>  	}
> -- 
> 1.9.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
Brad Figg Sept. 14, 2015, 2:30 p.m. UTC | #3
On Tue, Sep 08, 2015 at 10:43:05AM -0600, tim.gardner@canonical.com wrote:
> From: Alistair Popple <alistair@popple.id.au>
> 
> BugLink: http://bugs.launchpad.net/bugs/1493017
> 
> If ipmi_powernv_recv(...) is called without a current message it
> prints a warning and returns. However it fails to release the message
> lock causing the system to dead lock during any subsequent IPMI
> operations.
> 
> This error path should never normally be taken unless there are bugs
> elsewhere in the system.
> 
> Signed-off-by: Alistair Popple <alistair@popple.id.au>
> Signed-off-by: Corey Minyard <cminyard@mvista.com>
> (cherry picked from commit ad1ed2a9dd4c435d6a3ce470211db9a8d107c3e0)
> Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
> ---
>  drivers/char/ipmi/ipmi_powernv.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c
> index 79524ed..8753b0f 100644
> --- a/drivers/char/ipmi/ipmi_powernv.c
> +++ b/drivers/char/ipmi/ipmi_powernv.c
> @@ -125,6 +125,7 @@ static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi)
>  	spin_lock_irqsave(&smi->msg_lock, flags);
>  
>  	if (!smi->cur_msg) {
> +		spin_unlock_irqrestore(&smi->msg_lock, flags);
>  		pr_warn("no current message?\n");
>  		return 0;
>  	}
> -- 
> 1.9.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
Brad Figg Sept. 14, 2015, 4:57 p.m. UTC | #4
Applied to the master-next branch of Vivid.
diff mbox

Patch

diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c
index 79524ed..8753b0f 100644
--- a/drivers/char/ipmi/ipmi_powernv.c
+++ b/drivers/char/ipmi/ipmi_powernv.c
@@ -125,6 +125,7 @@  static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi)
 	spin_lock_irqsave(&smi->msg_lock, flags);
 
 	if (!smi->cur_msg) {
+		spin_unlock_irqrestore(&smi->msg_lock, flags);
 		pr_warn("no current message?\n");
 		return 0;
 	}