Hi Tony, you mentioned on IRC that your xm top problem was exascerbated
by passing a non-NULL pointer with bytes==0 to xencomm_create(). Does
this patch catch the problem without breaking anything else?

diff -r cc44870e4353 drivers/xen/core/xencomm.c
--- a/drivers/xen/core/xencomm.c        Fri Sep 08 10:17:30 2006 -0500
+++ b/drivers/xen/core/xencomm.c        Fri Sep 08 13:09:40 2006 -0700
@@ -51,8 +51,6 @@ static int xencomm_init(struct xencomm_d
 {
        unsigned long recorded = 0;
        int i = 0;
-
-       BUG_ON((buffer == NULL) && (bytes > 0));

        /* record the physical pages used */
        if (buffer == NULL)
@@ -121,11 +119,14 @@ int xencomm_create(void *buffer, unsigne
        int rc;

        if (xencomm_debug) {
-               if ((!buffer) || (bytes == 0)) {
-                       printk(KERN_ERR "%s: NULL buffer\n", __func__);
-                       return 0;
-               }
                printk("%s: %p[%ld]\n", __func__, buffer, bytes);
+       }
+
+       if (bytes == 0) {
+               /* if it's a NULL pointer, don't even bother */
+               BUG_ON(buffer != NULL);
+               desc = NULL;
+               goto out;
        }

        desc = xencomm_alloc(gfp_mask);
@@ -141,6 +142,7 @@ int xencomm_create(void *buffer, unsigne
                return rc;
        }

+out:
        *ret = desc;
        return 0;
 }


-- 
Hollis Blanchard
IBM Linux Technology Center


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

Reply via email to