qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jussi Hakala <jussi.hakala@hut.fi>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Qemu and mmap_min_addr
Date: Wed, 30 Apr 2008 14:43:09 +0300	[thread overview]
Message-ID: <48185B4D.4060903@hut.fi> (raw)

Depending on the setting of mmap_min_addr, the userspace qemu may just 
die with permission denied when trying to run a program with recent 
linux kernels.

The newest Ubuntu, Hardy Heron, ships with a default value of 65536 in 
/proc/sys/vm/mmap_min_addr which will cause the following problem (the 
test program is a simple hello world compiled for arm architecture).

$ sudo sh -c 'echo 65536 > /proc/sys/vm/mmap_min_addr'
$ qemu-arm ./a.out
mmap: Permission denied
$ sudo sh -c 'echo 32768 > /proc/sys/vm/mmap_min_addr'
$ qemu-arm ./a.out
hello world
$ qemu-arm -h
qemu-arm version 0.9.1, Copyright (c) 2003-2008 Fabrice Bellard
usage: qemu-arm [options] program [arguments...]
Linux CPU emulator (compiled for arm emulation)

The problem is present in every version of qemu I've tried, from 0.8.2 
to a quite recent cvs snapshot.

Seems that the problem is related to the mmap2 call and the first 
argument interpreted as a fixed address with MAP_FIXED flag set... 
here's an excerpt from strace for details:

mmap2(0x40000000, 528384, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40000000
mprotect(0x40080000, 4096, PROT_NONE)   = 0
mmap2(0x8000, 434176, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = -1 EACCES (Permission denied)
dup(2)                                  = 4
fcntl64(4, F_GETFL)                     = 0x2 (flags O_RDWR)
fstat64(4, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 10), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0xb7f5f000
_llseek(4, 0, 0xbfe5bf48, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(4, "mmap: Permission denied\n", 24mmap: Permission denied
) = 24
close(4)                                = 0
munmap(0xb7f5f000, 4096)                = 0
exit_group(-1)                          = ?

So, basically I'm asking if this is an easy thing to fix, ie. if it's 
easy to increment the address value to begin with or if the MAP_FIXED 
can be somehow done away with...

Regards,

   Jussi

             reply	other threads:[~2008-04-30 11:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-30 11:43 Jussi Hakala [this message]
2008-04-30 12:31 ` [Qemu-devel] Qemu and mmap_min_addr Paul Brook
2008-04-30 13:31   ` Jussi Hakala
2008-05-02  9:59     ` Jussi Hakala
2008-05-02 14:51     ` Richard Purdie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48185B4D.4060903@hut.fi \
    --to=jussi.hakala@hut.fi \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).