aboutsummaryrefslogtreecommitdiff
path: root/hw/ipmi
diff options
context:
space:
mode:
authorAlistair Popple <alistair@popple.id.au>2015-06-18 11:00:34 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-06-18 14:51:55 +1000
commit092d2a8e58cad4c9cac3dc573f5af6409d2d1ce6 (patch)
tree491e518cd7d23ff2009366794a3f165e1b7eeb4f /hw/ipmi
parent89b588267fe9233d6bdb26fa8671f41f79fc690b (diff)
downloadskiboot-092d2a8e58cad4c9cac3dc573f5af6409d2d1ce6.zip
skiboot-092d2a8e58cad4c9cac3dc573f5af6409d2d1ce6.tar.gz
skiboot-092d2a8e58cad4c9cac3dc573f5af6409d2d1ce6.tar.bz2
ipmi/sel: Fix use after free
The message was sometimes re-queued and always freed. Hilarity ensues. Signed-off-by: Alistair Popple <alistair@popple.id.au> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/ipmi')
-rw-r--r--hw/ipmi/ipmi-sel.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/hw/ipmi/ipmi-sel.c b/hw/ipmi/ipmi-sel.c
index 8851dc3..7007f83 100644
--- a/hw/ipmi/ipmi-sel.c
+++ b/hw/ipmi/ipmi-sel.c
@@ -69,10 +69,10 @@ static void ipmi_elog_error(struct ipmi_msg *msg)
if (msg->cc == IPMI_LOST_ARBITRATION_ERR)
/* Retry due to SEL erase */
ipmi_queue_msg(msg);
- else
+ else {
opal_elog_complete(msg->user_data, false);
-
- ipmi_free_msg(msg);
+ ipmi_free_msg(msg);
+ }
}
/* Goes through the required steps to add a complete eSEL: