Commit e89f07d38427dc9e3aab17298d1bc0d339ed3004

Authored by pbrook
1 parent 06c949e6

Make target_mmap always return -1 on failure.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1741 c046a42c-6fe2-441c-8c8c-71466251a162
linux-user/elfload.c
@@ -890,7 +890,7 @@ static unsigned long load_elf_interp(struct elfhdr * interp_elf_ex, @@ -890,7 +890,7 @@ static unsigned long load_elf_interp(struct elfhdr * interp_elf_ex,
890 interpreter_fd, 890 interpreter_fd,
891 eppnt->p_offset - TARGET_ELF_PAGEOFFSET(eppnt->p_vaddr)); 891 eppnt->p_offset - TARGET_ELF_PAGEOFFSET(eppnt->p_vaddr));
892 892
893 - if (error > -1024UL) { 893 + if (error == -1) {
894 /* Real error */ 894 /* Real error */
895 close(interpreter_fd); 895 close(interpreter_fd);
896 free(elf_phdata); 896 free(elf_phdata);
linux-user/mmap.c
@@ -183,8 +183,10 @@ long target_mmap(unsigned long start, unsigned long len, int prot, @@ -183,8 +183,10 @@ long target_mmap(unsigned long start, unsigned long len, int prot,
183 } 183 }
184 #endif 184 #endif
185 185
186 - if (offset & ~TARGET_PAGE_MASK)  
187 - return -EINVAL; 186 + if (offset & ~TARGET_PAGE_MASK) {
  187 + errno = EINVAL;
  188 + return -1;
  189 + }
188 190
189 len = TARGET_PAGE_ALIGN(len); 191 len = TARGET_PAGE_ALIGN(len);
190 if (len == 0) 192 if (len == 0)
@@ -232,8 +234,10 @@ long target_mmap(unsigned long start, unsigned long len, int prot, @@ -232,8 +234,10 @@ long target_mmap(unsigned long start, unsigned long len, int prot,
232 } 234 }
233 } 235 }
234 236
235 - if (start & ~TARGET_PAGE_MASK)  
236 - return -EINVAL; 237 + if (start & ~TARGET_PAGE_MASK) {
  238 + errno = EINVAL;
  239 + return -1;
  240 + }
237 end = start + len; 241 end = start + len;
238 host_end = HOST_PAGE_ALIGN(end); 242 host_end = HOST_PAGE_ALIGN(end);
239 243
@@ -244,8 +248,10 @@ long target_mmap(unsigned long start, unsigned long len, int prot, @@ -244,8 +248,10 @@ long target_mmap(unsigned long start, unsigned long len, int prot,
244 /* msync() won't work here, so we return an error if write is 248 /* msync() won't work here, so we return an error if write is
245 possible while it is a shared mapping */ 249 possible while it is a shared mapping */
246 if ((flags & MAP_TYPE) == MAP_SHARED && 250 if ((flags & MAP_TYPE) == MAP_SHARED &&
247 - (prot & PROT_WRITE))  
248 - return -EINVAL; 251 + (prot & PROT_WRITE)) {
  252 + errno = EINVAL;
  253 + return -1;
  254 + }
249 retaddr = target_mmap(start, len, prot | PROT_WRITE, 255 retaddr = target_mmap(start, len, prot | PROT_WRITE,
250 MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 256 MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS,
251 -1, 0); 257 -1, 0);