qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [Bug 1779955] [NEW] qemu-arm-static read() doesn't accept m


From: Ke Liu
Subject: [Qemu-devel] [Bug 1779955] [NEW] qemu-arm-static read() doesn't accept mmap address as destination
Date: Tue, 03 Jul 2018 22:32:02 -0000

Public bug reported:

When read() function takes an mmap'ed address as output buffer, it
returns EFAULT. The expected behavior is it should just work.

The following code works for qemu-system-arm, but not for qemu-arm-
static.

QEMU version affected: latest release 2.12.0.

Steps to reproduce (please substitute /path/to/qemu-arm-static with the
path of the binary, and /tmp/a.cpp with the example source code
attached):

# First register binfmt_misc
[hidden]$ docker run --rm --privileged multiarch/qemu-user-static:register 
--reset

# Compile the code and run
[hidden]$ docker run --rm -it -v /tmp/a.cpp:/tmp/a.cpp -v 
/path/to/qemu-arm-static:/usr/bin/qemu-arm-static arm32v7/ubuntu:18.04 bash -c 
'{ apt update -y && apt install -y g++; } >& /dev/null && g++ -std=c++14 
/tmp/a.cpp -o /tmp/a.out && echo hehe > /tmp/haha.txt && /tmp/a.out'
ofd=3
ftruncate=0
mmap=0xff3f5000
fd=4
0xff3f5023 -1 14

The expected result in qemu-system-arm as well as natively on x86_64 host:
hidden$ ./a.out
ofd=3
ftruncate=0
mmap=0xb6fb7000
fd=4
0xb6fb7023 5 0

** Affects: qemu
     Importance: Undecided
         Status: New

** Attachment added: "a.cpp"
   https://bugs.launchpad.net/bugs/1779955/+attachment/5159341/+files/a.cpp

** Description changed:

  When read() function takes an mmap'ed address as output buffer, it
  returns EFAULT. The expected behavior is it should just work.
  
  The following code works for qemu-system-arm, but not for qemu-arm-
  static.
  
+ QEMU version affected: latest release 2.12.0.
  
  Steps to reproduce (please substitute /path/to/qemu-arm-static with the
  path of the binary, and /tmp/a.cpp with the example source code
  attached):
  
  # First register binfmt_misc
  [hidden]$ docker run --rm --privileged multiarch/qemu-user-static:register 
--reset
  
  # Compile the code and run
  [hidden]$ docker run --rm -it -v /tmp/a.cpp:/tmp/a.cpp -v 
/path/to/qemu-arm-static:/usr/bin/qemu-arm-static arm32v7/ubuntu:18.04 bash -c 
'{ apt update -y && apt install -y g++; } >& /dev/null && g++ -std=c++14 
/tmp/a.cpp -o /tmp/a.out && echo hehe > /tmp/haha.txt && /tmp/a.out'
  ofd=3
  ftruncate=0
  mmap=0xff3f5000
  fd=4
  0xff3f5023 -1 14
  
- 
  The expected result in qemu-system-arm as well as natively on x86_64 host:
- hidden$ ./a.out                                                               
                                                                                
      
- ofd=3                                                                         
                                       
- ftruncate=0                                                                   
                                       
- mmap=0xb6fb7000                                                               
                                           
- fd=4                                                                          
                                                          
+ hidden$ ./a.out
+ ofd=3
+ ftruncate=0
+ mmap=0xb6fb7000
+ fd=4
  0xb6fb7023 5 0

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1779955

Title:
  qemu-arm-static read() doesn't accept mmap address as destination

Status in QEMU:
  New

Bug description:
  When read() function takes an mmap'ed address as output buffer, it
  returns EFAULT. The expected behavior is it should just work.

  The following code works for qemu-system-arm, but not for qemu-arm-
  static.

  QEMU version affected: latest release 2.12.0.

  Steps to reproduce (please substitute /path/to/qemu-arm-static with
  the path of the binary, and /tmp/a.cpp with the example source code
  attached):

  # First register binfmt_misc
  [hidden]$ docker run --rm --privileged multiarch/qemu-user-static:register 
--reset

  # Compile the code and run
  [hidden]$ docker run --rm -it -v /tmp/a.cpp:/tmp/a.cpp -v 
/path/to/qemu-arm-static:/usr/bin/qemu-arm-static arm32v7/ubuntu:18.04 bash -c 
'{ apt update -y && apt install -y g++; } >& /dev/null && g++ -std=c++14 
/tmp/a.cpp -o /tmp/a.out && echo hehe > /tmp/haha.txt && /tmp/a.out'
  ofd=3
  ftruncate=0
  mmap=0xff3f5000
  fd=4
  0xff3f5023 -1 14

  The expected result in qemu-system-arm as well as natively on x86_64 host:
  hidden$ ./a.out
  ofd=3
  ftruncate=0
  mmap=0xb6fb7000
  fd=4
  0xb6fb7023 5 0

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1779955/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]