diff mbox

ipmi/powernv: Fix a minor bug

Message ID 20150708062702.11242.47257.stgit@localhost.localdomain (mailing list archive)
State Changes Requested
Headers show

Commit Message

Neelesh Gupta July 8, 2015, 6:27 a.m. UTC
If the OPAL call to receive the ipmi message fails, then we free up the smi
message before returning. But, the driver still holds the reference to old
smi message in the 'cur_msg' which is dangerous if the driver derefernces it
later and it will further block the subsequent ipmi operations. So, to fix
it up, we need to nullify 'cur_msg' in the error case.

Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com>
---
 drivers/char/ipmi/ipmi_powernv.c |    1 +
 1 file changed, 1 insertion(+)

Comments

Michael Ellerman July 8, 2015, 10:42 a.m. UTC | #1
On Wed, 2015-08-07 at 06:27:28 UTC, Neelesh Gupta wrote:
> If the OPAL call to receive the ipmi message fails, then we free up the smi
> message before returning. But, the driver still holds the reference to old
> smi message in the 'cur_msg' which is dangerous if the driver derefernces it
> later and it will further block the subsequent ipmi operations. 

This doesn't sound like "a minor bug" ?

What are the actual symptoms of the bug? Does it crash, always, sometimes? Does
it actually "block the subsequent ipmi operations"?

Even if this *is* a minor bug, please give it a proper subject that describes
what it does.

Also which commit introduced the bug?

And finally you don't seem to have CC'ed the ipmi maintainers?

cheers
Neelesh Gupta July 9, 2015, 10:35 a.m. UTC | #2
Hi Michael,

On 07/08/2015 04:12 PM, Michael Ellerman wrote:
> On Wed, 2015-08-07 at 06:27:28 UTC, Neelesh Gupta wrote:
>> If the OPAL call to receive the ipmi message fails, then we free up the smi
>> message before returning. But, the driver still holds the reference to old
>> smi message in the 'cur_msg' which is dangerous if the driver derefernces it
>> later and it will further block the subsequent ipmi operations.
> This doesn't sound like "a minor bug" ?
>
> What are the actual symptoms of the bug? Does it crash, always, sometimes? Does
> it actually "block the subsequent ipmi operations"?

In the normal scenario, it doesn't happen.
To create the crash, I passed error code in opal call 'opal_ipmi_recv()'
I think there is more need to be done than this change. So, I will resend
the next version addressing all of your concerns.

Thanks,
Neelesh.

>
> Even if this *is* a minor bug, please give it a proper subject that describes
> what it does.
>
> Also which commit introduced the bug?
>
> And finally you don't seem to have CC'ed the ipmi maintainers?
>
> cheers
>
diff mbox

Patch

diff --git a/drivers/char/ipmi/ipmi_powernv.c b/drivers/char/ipmi/ipmi_powernv.c
index 9b409c0..08dd38f 100644
--- a/drivers/char/ipmi/ipmi_powernv.c
+++ b/drivers/char/ipmi/ipmi_powernv.c
@@ -143,6 +143,7 @@  static int ipmi_powernv_recv(struct ipmi_smi_powernv *smi)
 	pr_devel("%s:   -> %d (size %lld)\n", __func__,
 			rc, rc == 0 ? size : 0);
 	if (rc) {
+		smi->cur_msg = NULL;
 		spin_unlock_irqrestore(&smi->msg_lock, flags);
 		ipmi_free_smi_msg(msg);
 		return 0;