diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2009-01-24 08:22:47 +0000 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-26 14:29:26 +0100 |
commit | e88a0faae5baaaa3bdc6f23a55ad6bc7a7b4aa77 (patch) | |
tree | 375202c0650c76db3132ad3ea269dfa45893f6fb /drivers/xen | |
parent | 659d2618b38f8a4d91bdb19cfc5c7fb330a4c55a (diff) | |
download | op-kernel-dev-e88a0faae5baaaa3bdc6f23a55ad6bc7a7b4aa77.zip op-kernel-dev-e88a0faae5baaaa3bdc6f23a55ad6bc7a7b4aa77.tar.gz |
xen: unitialised return value in xenbus_write_transaction
The return value of xenbus_write_transaction can be uninitialised in
the success case leading to the userspace xenstore utilities failing.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/xen')
-rw-r--r-- | drivers/xen/xenfs/xenbus.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/xen/xenfs/xenbus.c b/drivers/xen/xenfs/xenbus.c index 875a4c5..a9592d9 100644 --- a/drivers/xen/xenfs/xenbus.c +++ b/drivers/xen/xenfs/xenbus.c @@ -291,7 +291,7 @@ static void watch_fired(struct xenbus_watch *watch, static int xenbus_write_transaction(unsigned msg_type, struct xenbus_file_priv *u) { - int rc, ret; + int rc; void *reply; struct xenbus_transaction_holder *trans = NULL; LIST_HEAD(staging_q); @@ -326,15 +326,14 @@ static int xenbus_write_transaction(unsigned msg_type, } mutex_lock(&u->reply_mutex); - ret = queue_reply(&staging_q, &u->u.msg, sizeof(u->u.msg)); - if (!ret) - ret = queue_reply(&staging_q, reply, u->u.msg.len); - if (!ret) { + rc = queue_reply(&staging_q, &u->u.msg, sizeof(u->u.msg)); + if (!rc) + rc = queue_reply(&staging_q, reply, u->u.msg.len); + if (!rc) { list_splice_tail(&staging_q, &u->read_buffers); wake_up(&u->read_waitq); } else { queue_cleanup(&staging_q); - rc = ret; } mutex_unlock(&u->reply_mutex); |