diff options
author | David S. Miller <davem@davemloft.net> | 2009-01-26 17:43:16 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-01-26 17:43:16 -0800 |
commit | 3eacdf58c2c0b9507afedfc19108e98b992c31e4 (patch) | |
tree | d95e7e022ff6e6181edce43fe97cf2883b5a91ed /drivers/xen | |
parent | dd0a251c8e087bca05e8f9a3657078591ae6e12b (diff) | |
parent | 5376071069ec8a7e6a8112beab16fc24f5139475 (diff) | |
download | blackbird-op-linux-3eacdf58c2c0b9507afedfc19108e98b992c31e4.tar.gz blackbird-op-linux-3eacdf58c2c0b9507afedfc19108e98b992c31e4.zip |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'drivers/xen')
-rw-r--r-- | drivers/xen/balloon.c | 8 | ||||
-rw-r--r-- | drivers/xen/xenfs/xenbus.c | 11 |
2 files changed, 13 insertions, 6 deletions
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c index 8dc7109d61b7..2ba8f95516a0 100644 --- a/drivers/xen/balloon.c +++ b/drivers/xen/balloon.c @@ -298,6 +298,14 @@ static int decrease_reservation(unsigned long nr_pages) frame_list[i] = pfn_to_mfn(pfn); scrub_page(page); + + if (!PageHighMem(page)) { + ret = HYPERVISOR_update_va_mapping( + (unsigned long)__va(pfn << PAGE_SHIFT), + __pte_ma(0), 0); + BUG_ON(ret); + } + } /* Ensure that ballooned highmem pages don't have kmaps. */ diff --git a/drivers/xen/xenfs/xenbus.c b/drivers/xen/xenfs/xenbus.c index 875a4c59c594..a9592d981b10 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); |