]> xenbits.xensource.com Git - xen.git/commitdiff
tmem: properly drop lock on error path in do_tmem_get()
authorJan Beulich <jbeulich@suse.com>
Tue, 11 Sep 2012 12:18:08 +0000 (14:18 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 11 Sep 2012 12:18:08 +0000 (14:18 +0200)
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>
xen/common/tmem.c

index b1d0017e47b630cf9e72f970d6c905070512bb8e..6385cd1fcb67fb72fed4ced6cf7016f11ea4b5b6 100644 (file)
@@ -1790,7 +1790,6 @@ static NOINLINE int do_tmem_get(pool_t *pool, OID *oidp, uint32_t index,
             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 *pool, OID *oidp, uint32_t index,
     return 1;
 
 bad_copy:
+    obj->no_evict = 0;
+    tmem_spin_unlock(&obj->obj_spinlock);
     failed_copies++;
     return rc;
 }