WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ppc-devel

Re: [XenPPC] [PATCH] Fix up potential memory leaks introduced by xencomm

To: jyoung5@xxxxxxxxxx
Subject: Re: [XenPPC] [PATCH] Fix up potential memory leaks introduced by xencomm patch
From: Jimi Xenidis <jimix@xxxxxxxxxxxxxx>
Date: Thu, 8 Feb 2007 07:18:51 -0500
Cc: xen-ppc-devel <xen-ppc-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Thu, 08 Feb 2007 04:18:08 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <1170883566.3172.20.camel@thinkpad>
List-help: <mailto:xen-ppc-devel-request@lists.xensource.com?subject=help>
List-id: Xen PPC development <xen-ppc-devel.lists.xensource.com>
List-post: <mailto:xen-ppc-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ppc-devel>, <mailto:xen-ppc-devel-request@lists.xensource.com?subject=unsubscribe>
References: <1170883566.3172.20.camel@thinkpad>
Sender: xen-ppc-devel-bounces@xxxxxxxxxxxxxxxxxxx
mostly Linux Kernel style NITS

On Feb 7, 2007, at 4:26 PM, Jerone Young wrote:

With some of the logic change from the Xencomm patch. In a few
hypercalls introduces a situation where you can potentially have memory
leaks if something fails. This patch address these issues.

Signed-off-by: Jerone Young <jyoung5@xxxxxxxxxx>

diff -r 37ea4cf1281a arch/powerpc/platforms/xen/hcall.c
--- a/arch/powerpc/platforms/xen/hcall.c Tue Feb 06 17:10:20 2007 -0500 +++ b/arch/powerpc/platforms/xen/hcall.c Wed Feb 07 14:50:05 2007 -0600
@@ -203,11 +203,16 @@ int HYPERVISOR_sched_op(int cmd, void *a
        desc = xencomm_map_no_alloc(arg, argsize);
-       if (desc == NULL)
-               return -EINVAL;
-
-       rc = plpar_hcall_norets(XEN_MARK(__HYPERVISOR_sched_op),
-                               cmd, desc);
+       if (desc)
+       {

brace on same line

+               rc = plpar_hcall_norets(XEN_MARK(__HYPERVISOR_sched_op),
+                                       cmd, desc);
+               xencomm_free(desc);
+       }
+       else
+       {

no braces for single line, in fact avoid the single line by pre- assigning the rc, the compiler will do the right optimization anyway.

+               rc = -EINVAL;

I thought we agreed that xencomm_map_* failures would be ENOMEM or ENOSPC?

+       }
        xencomm_free(ports);
@@ -389,8 +394,8 @@ static int xenppc_privcmd_domctl(privcmd
        if (copy_to_user(user_op, &kern_op, sizeof(xen_domctl_t)))
                ret = -EFAULT;
-       xencomm_free(desc);
out:
+       xencomm_free(desc);
        xencomm_free(op_desc);
        return ret;
}
@@ -463,8 +468,8 @@ static int xenppc_privcmd_sysctl(privcmd
        if (copy_to_user(user_op, &kern_op, sizeof(xen_sysctl_t)))
                ret = -EFAULT;
-       xencomm_free(desc);
out:
+       xencomm_free(desc);
        xencomm_free(op_desc);
        return ret;
}
@@ -514,8 +519,8 @@ static int xenppc_privcmd_platform_op(pr
        if (copy_to_user(user_op, &kern_op, sizeof(xen_platform_op_t)))
                ret = -EFAULT;
-       xencomm_free(desc);
out:
+       xencomm_free(desc);
        xencomm_free(op_desc);
        return ret;
}
@@ -547,7 +552,10 @@ int HYPERVISOR_memory_op(unsigned int cm
                                sizeof(*xen_guest_handle(mop->extent_start)));
                        if (desc == NULL)
+                       {

Curlies again

+                               xencomm_free(op_desc);
                                return -ENOMEM;
+                       }
                        set_xen_guest_handle(mop->extent_start,
                                             desc);


_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel

<Prev in Thread] Current Thread [Next in Thread>