33 lines
1.0 KiB
Diff
33 lines
1.0 KiB
Diff
|
# HG changeset patch
|
||
|
# User Jan Beulich <jbeulich@suse.com>
|
||
|
# Date 1347365888 -7200
|
||
|
# Node ID 83b97a59888b6d2d0f984b8403bd5764dd55c10c
|
||
|
# Parent 33b8c42a87ec2fa6e6533dd9ee7603f732b168f5
|
||
|
tmem: properly drop lock on error path in do_tmem_get()
|
||
|
|
||
|
Also remove a bogus assertion.
|
||
|
|
||
|
Reported-by: Tim Deegan <tim@xen.org>
|
||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||
|
Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com>
|
||
|
|
||
|
--- a/xen/common/tmem.c
|
||
|
+++ b/xen/common/tmem.c
|
||
|
@@ -1790,7 +1790,6 @@ static NOINLINE int do_tmem_get(pool_t *
|
||
|
list_del(&pgp->us.client_eph_pages);
|
||
|
list_add_tail(&pgp->us.client_eph_pages,&client->ephemeral_page_list);
|
||
|
tmem_spin_unlock(&eph_lists_spinlock);
|
||
|
- ASSERT(obj != NULL);
|
||
|
obj->last_client = tmh_get_cli_id_from_current();
|
||
|
}
|
||
|
}
|
||
|
@@ -1807,6 +1806,8 @@ static NOINLINE int do_tmem_get(pool_t *
|
||
|
return 1;
|
||
|
|
||
|
bad_copy:
|
||
|
+ obj->no_evict = 0;
|
||
|
+ tmem_spin_unlock(&obj->obj_spinlock);
|
||
|
failed_copies++;
|
||
|
return rc;
|
||
|
}
|