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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|