qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 02/10] xen: backend driver core


From: Gerd Hoffmann
Subject: Re: [Qemu-devel] [PATCH 02/10] xen: backend driver core
Date: Wed, 08 Apr 2009 11:21:59 +0200
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1b3pre) Gecko/20090324 Fedora/3.0-2.1.beta2.fc11 Thunderbird/3.0b2

On 04/07/09 21:41, Anthony Liguori wrote:
+/* private */
+static TAILQ_HEAD(XenDeviceHead, XenDevice) xendevs =
TAILQ_HEAD_INITIALIZER(xendevs);
+static int debug = 0;

Would be better to have all of this in a structure that had a single
static instance. Would be even better if you could avoid requiring the
static instance.

Huh?  Point being?  This is just a list head, i.e. a pointer (or two?).

+char *xenstore_read_str(const char *base, const char *node)
+{
+ char abspath[XEN_BUFSIZE];
+ unsigned int len;
+
+ snprintf(abspath, sizeof(abspath), "%s/%s", base, node);
+ return xs_read(xenstore, 0, abspath, &len);

xs_read() is a xenstore API, it's returning malloc()'d memory.

+int xenstore_read_int(const char *base, const char *node, int *ival)
+{
+ char *val;
+ int rc = -1;
+
+ val = xenstore_read_str(base, node);
+ if (val && 1 == sscanf(val, "%d", ival))
+ rc = 0;
+ qemu_free(val);

And here you're free()'ing with qemu_free.

Oops.  Good catch.

+ xendev = qemu_mallocz(ops->size);
+ if (!xendev)
+ return NULL;

No need to check malloc failures.

Will fix.

+ dev = xs_directory(xenstore, 0, path, &cdev);
+ qemu_free(dev);

Mixing qemu_free() with malloc'd memory.

This too.

You also have open coded calls to fprintf(stderr)
whereas you've introduced a higher level function.

The high-level function wants a device instance and thus doesn't work everythere. Nevertheless the code probably should use the new qemu_log() function instead. I'll look into this.

cheers,
 Gerd





reply via email to

[Prev in Thread] Current Thread [Next in Thread]