> +
> +extern struct semaphore xenwatch_mutex;
you know, there is this thing called "struct mutex", please use that
instead; don't add new deprecated semaphore's when using them as mutex
> +#define streq(a, b) (strcmp((a), (b)) == 0)
ehhh why?
> +EXPORT_SYMBOL(xenbus_register_frontend);
please consider _GPL
> +static void xenbus_dev_free(struct xenbus_device *xendev)
> +{
> + kfree(xendev);
> +}
why this wrapper ?
> +
> +/* Simplified asprintf. */
> +char *kasprintf(const char *fmt, ...)
> +{
> + va_list ap;
> + unsigned int len;
> + char *p, dummy[1];
> +
> + va_start(ap, fmt);
> + /* FIXME: vsnprintf has a bug, NULL should work */
> + len = vsnprintf(dummy, 0, fmt, ap);
> + va_end(ap);
> +
> + p = kmalloc(len + 1, GFP_KERNEL);
> + if (!p)
> + return NULL;
> + va_start(ap, fmt);
> + vsprintf(p, fmt, ap);
> + va_end(ap);
> + return p;
> +}
this should take a gfp mask most likely
> +
> + /* We don't refcnt properly, so set reserved on page.
> + * (this allocation is permanent) */
> + SetPageReserved(virt_to_page(page));
you may want to reconsider this given the "recent" vm changes
> + down(&xs_state.request_mutex);
please use a real mutex instead
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|