From 7913beaef3e6a2c4f7f315a8db7a31dbe1f713e0 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 21 Mar 2010 23:20:35 +0100 Subject: Fix allowing termination on some error path * libpager/data-request.c (_pager_seqnos_memory_object_data_request): when _pager_pagemap_resize returns an error, instead of goto release_out, goto new label allow_release_out thats calls _pager_allow_termination before proceeding with release_out. --- libpager/data-request.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libpager') diff --git a/libpager/data-request.c b/libpager/data-request.c index f5bbfb5b..2bd80b9e 100644 --- a/libpager/data-request.c +++ b/libpager/data-request.c @@ -74,7 +74,7 @@ _pager_seqnos_memory_object_data_request (mach_port_t object, err = _pager_pagemap_resize (p, offset + length); if (err) - goto release_out; /* Can't do much about the actual error. */ + goto allow_release_out; /* Can't do much about the actual error. */ /* If someone is paging this out right now, the disk contents are unreliable, so we have to wait. It is too expensive (right now) to @@ -140,6 +140,8 @@ _pager_seqnos_memory_object_data_request (mach_port_t object, ports_port_deref (p); return 0; + allow_release_out: + _pager_allow_termination (p); release_out: _pager_release_seqno (p, seqno); mutex_unlock (&p->interlock); -- cgit v1.2.3