Skip to content

Commit

Permalink
prd: Validate _opal_queue_msg() return value
Browse files Browse the repository at this point in the history
On safer side, validate _opal_queue_msg() return value.

Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Acked-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
  • Loading branch information
Vasant Hegde authored and stewartsmith committed Jun 3, 2019
1 parent bdcf448 commit fcb1d4d
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions hw/prd.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ static void send_next_pending_event(void)
{
struct proc_chip *chip;
uint32_t proc;
int rc;
uint8_t event;

assert(!prd_msg_inuse);
Expand All @@ -182,7 +183,6 @@ static void send_next_pending_event(void)
if (!event)
return;

prd_msg_inuse = true;
prd_msg->token = 0;
prd_msg->hdr.size = sizeof(*prd_msg);

Expand Down Expand Up @@ -211,9 +211,12 @@ static void send_next_pending_event(void)
* We always need to handle PSI interrupts, but if the is PRD is
* disabled then we shouldn't propagate PRD events to the host.
*/
if (prd_enabled)
_opal_queue_msg(OPAL_MSG_PRD, prd_msg, prd_msg_consumed,
prd_msg->hdr.size, prd_msg);
if (prd_enabled) {
rc = _opal_queue_msg(OPAL_MSG_PRD, prd_msg, prd_msg_consumed,
prd_msg->hdr.size, prd_msg);
if (!rc)
prd_msg_inuse = true;
}
}

static void __prd_event(uint32_t proc, uint8_t event)
Expand Down Expand Up @@ -420,11 +423,14 @@ static int prd_msg_handle_firmware_req(struct opal_prd_msg *msg)
rc = -ENOSYS;
}

if (!rc)
if (!rc) {
rc = _opal_queue_msg(OPAL_MSG_PRD, prd_msg, prd_msg_consumed,
prd_msg->hdr.size, prd_msg);
else
if (rc)
prd_msg_inuse = false;
} else {
prd_msg_inuse = false;
}

unlock(&events_lock);

Expand Down

0 comments on commit fcb1d4d

Please sign in to comment.