|
From: Jeremy F. <je...@go...> - 2004-01-07 08:45:19
|
CVS commit by fitzhardinge:
Fix for bug 72006 by Tom Hughes: report proper error returns for mmap()
M +24 -13 vg_syscalls.c 1.76
--- valgrind/coregrind/vg_syscalls.c #1.75:1.76
@@ -3556,4 +3556,5 @@ PRE(mmap2)
POST(mmap2)
{
+ if (!VG_(is_kerror)(res)) {
if (!valid_client_addr(res, arg2, tid, "mmap2")) {
VG_(munmap)((void *)res, arg2);
@@ -3561,4 +3562,5 @@ POST(mmap2)
} else
mmap_segment( (Addr)res, arg2, arg3, arg4, arg5, arg6 * (ULong)VKI_BYTES_PER_PAGE );
+ }
}
@@ -3597,9 +3599,17 @@ PRE(mmap)
if (res != -VKI_ENOMEM) {
- res = (Int)VG_(mmap)((void *)a1, a2, a3, a4 | VKI_MAP_CLIENT, a5, a6);
+ UInt new_arg_block[6];
- if (res == -1)
- res = -VKI_ENOMEM;
- else if (!valid_client_addr(res, a2, tid, "mmap")) {
+ new_arg_block[0] = a1;
+ new_arg_block[1] = a2;
+ new_arg_block[2] = a3;
+ new_arg_block[3] = a4;
+ new_arg_block[4] = a5;
+ new_arg_block[5] = a6;
+
+ res = VG_(do_syscall)(__NR_mmap, new_arg_block);
+
+ if (!VG_(is_kerror)(res)) {
+ if (!valid_client_addr(res, a2, tid, "mmap")) {
VG_(munmap)((void *)res, a2);
res = -VKI_ENOMEM;
@@ -3607,4 +3617,5 @@ PRE(mmap)
mmap_segment( (Addr)res, a2, a3, a4, a5, a6 );
}
+ }
}
|