[Skiboot] [PATCH v2] ipmi: Fix the opal_ipmi_recv() call to handle the error path

Alistair Popple alistair at popple.id.au
Tue Aug 11 15:02:09 AEST 2015


Acked-by: Alistair Popple <alistair at popple.id.au>

On Fri, 31 Jul 2015 11:47:08 Neelesh Gupta wrote:
> In the error path of the OPAL function to receive the ipmi message,
> the function returns the error code without deleting the message
> containing response. Though the kernel doesn't claim this message
> later and continue with the subsequent ipmi commands. This leads to
> a scenario when there is a mismatch between the ipmi command and its
> response for all the subsequent ipmi commands.
> 
> Signed-off-by: Neelesh Gupta <neelegup at linux.vnet.ibm.com>
> Cc: Alistair Popple <alistair at popple.id.au>
> ---
>  hw/ipmi/ipmi-opal.c |   13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ipmi/ipmi-opal.c b/hw/ipmi/ipmi-opal.c
> index 237f8c0..1b28aa6 100644
> --- a/hw/ipmi/ipmi-opal.c
> +++ b/hw/ipmi/ipmi-opal.c
> @@ -82,18 +82,18 @@ static int64_t opal_ipmi_recv(uint64_t interface,
>  	if (opal_ipmi_msg->version != OPAL_IPMI_MSG_FORMAT_VERSION_1) {
>  		prerror("OPAL IPMI: Incorrect version\n");
>  		rc = OPAL_UNSUPPORTED;
> -		goto out_unlock;
> +		goto out_del_msg;
>  	}
>  
>  	if (interface != IPMI_DEFAULT_INTERFACE) {
>  		prerror("IPMI: Invalid interface 0x%llx in opal_ipmi_recv\n", interface);
> -		rc = OPAL_EMPTY;
> -		goto out_unlock;
> +		rc = OPAL_PARAMETER;
> +		goto out_del_msg;
>  	}
>  
>  	if (*msg_len - sizeof(struct opal_ipmi_msg) < msg->resp_size + 1) {
>  		rc = OPAL_RESOURCE;
> -		goto out_unlock;
> +		goto out_del_msg;
>  	}
>  
>  	list_del(&msg->link);
> @@ -115,6 +115,11 @@ static int64_t opal_ipmi_recv(uint64_t interface,
>  
>  	return OPAL_SUCCESS;
>  
> +out_del_msg:
> +	list_del(&msg->link);
> +	if (list_empty(&msgq))
> +		opal_update_pending_evt(ipmi_backend->opal_event_ipmi_recv, 0);
> +	ipmi_free_msg(msg);
>  out_unlock:
>  	unlock(&msgq_lock);
>  	return rc;
> 
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/skiboot/attachments/20150811/3cddab0a/attachment.html>


More information about the Skiboot mailing list