[Skiboot] [PATCH] OCC: Fix possible memory leak in error path
Neelesh Gupta
neelegup at linux.vnet.ibm.com
Mon Mar 9 02:41:56 AEDT 2015
On 03/08/2015 03:16 PM, Vasant Hegde wrote:
> free fsp_msg if fsp_queue_msg fails.
>
> Signed-off-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
> ---
> hw/occ.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/hw/occ.c b/hw/occ.c
> index 657f2ad..b523a42 100644
> --- a/hw/occ.c
> +++ b/hw/occ.c
> @@ -409,6 +409,7 @@ static void __occ_do_load(u8 scope, u32 dbob_id __unused, u32 seq_id)
> if (rc) {
> log_simple_error(&e_info(OPAL_RC_OCC_LOAD),
> "OCC: Error %d queueing FSP OCC LOAD STATUS msg", rc);
> + free(stat);
fsp_freemsg() should be used instead, to avoid leaking 'msg->resp'
Same at the other places below.
Neelesh.
> }
> }
>
> @@ -446,6 +447,7 @@ static void occ_do_load(u8 scope, u32 dbob_id __unused, u32 seq_id)
> if (rc) {
> log_simple_error(&e_info(OPAL_RC_OCC_LOAD),
> "OCC: Error %d queueing FSP OCC LOAD reply\n", rc);
> + free(rsp);
> return;
> }
>
> @@ -481,6 +483,7 @@ static void occ_do_reset(u8 scope, u32 dbob_id, u32 seq_id)
> if (rsp)
> rc = fsp_queue_msg(rsp, fsp_freemsg);
> if (rc) {
> + free(rsp);
> log_simple_error(&e_info(OPAL_RC_OCC_RESET),
> "OCC: Error %d queueing FSP OCC RESET reply\n", rc);
> return;
> @@ -509,6 +512,7 @@ static void occ_do_reset(u8 scope, u32 dbob_id, u32 seq_id)
> if (stat)
> rc = fsp_queue_msg(stat, fsp_freemsg);
> if (rc) {
> + free(stat);
> log_simple_error(&e_info(OPAL_RC_OCC_RESET),
> "OCC: Error %d queueing FSP OCC RESET"
> " STATUS message\n", rc);
> @@ -528,6 +532,7 @@ static void occ_do_reset(u8 scope, u32 dbob_id, u32 seq_id)
> if (stat)
> rc = fsp_queue_msg(stat, fsp_freemsg);
> if (rc) {
> + free(stat);
> log_simple_error(&e_info(OPAL_RC_OCC_RESET),
> "OCC: Error %d queueing FSP OCC RESET"
> " STATUS message\n", rc);
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
More information about the Skiboot
mailing list