diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2010-03-21 23:20:35 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2010-03-21 23:20:35 +0100 |
commit | 7913beaef3e6a2c4f7f315a8db7a31dbe1f713e0 (patch) | |
tree | bcdc14258df557a619b7607f95564ad1641c7ff2 /libpager | |
parent | 05367cedf498dfe9f061c5d9821a7f05eb501143 (diff) |
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.
Diffstat (limited to 'libpager')
-rw-r--r-- | libpager/data-request.c | 4 |
1 files changed, 3 insertions, 1 deletions
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); |