Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 8ddc171b7b302844d9f4598125fed925b72c686c
      
https://github.com/qemu/qemu/commit/8ddc171b7b302844d9f4598125fed925b72c686c
  Author: Afonso Bordado <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/syscall.c

  Log Message:
  -----------
  linux-user: Emulate /proc/cpuinfo output for riscv

RISC-V does not expose all extensions via hwcaps, thus some userspace
applications may want to query these via /proc/cpuinfo.

Currently when querying this file the host's file is shown instead
which is slightly confusing. Emulate a basic /proc/cpuinfo file
with mmu info and an ISA string.

Signed-off-by: Afonso Bordado <[email protected]>
Reviewed-by: Palmer Dabbelt <[email protected]>
Acked-by: Palmer Dabbelt <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Reviewed-by: Alistair Francis <[email protected]>
Reviewed-by: LIU Zhiwei <[email protected]>
Message-Id: <[email protected]>
[lv: removed the test that fails in CI for unknown reason]
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: 59d11727768a0a29675a78a18c3f87390d5dc90a
      
https://github.com/qemu/qemu/commit/59d11727768a0a29675a78a18c3f87390d5dc90a
  Author: Thomas Weißschuh <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/syscall.c

  Log Message:
  -----------
  linux-user: report ENOTTY for unknown ioctls

The correct error number for unknown ioctls is ENOTTY.

ENOSYS would mean that the ioctl() syscall itself is not implemented,
which is very improbable and unexpected for userspace.

ENOTTY means "Inappropriate ioctl for device". This is what the kernel
returns on unknown ioctls, what qemu is trying to express and what
userspace is prepared to handle.

Signed-off-by: Thomas Weißschuh <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: 4b2d2753e88bdb25db5eab84c172135200f15c99
      
https://github.com/qemu/qemu/commit/4b2d2753e88bdb25db5eab84c172135200f15c99
  Author: Thomas Weißschuh <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/syscall.c

  Log Message:
  -----------
  linux-user: Add move_mount() syscall

Signed-off-by: Thomas Weißschuh <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
[lv: define syscall]
Message-Id: <[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: 7f696cddd9d7bbde0ecc489eb9a29c7196b29727
      
https://github.com/qemu/qemu/commit/7f696cddd9d7bbde0ecc489eb9a29c7196b29727
  Author: Thomas Weißschuh <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/syscall.c

  Log Message:
  -----------
  linux-user: Add open_tree() syscall

Signed-off-by: Thomas Weißschuh <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Message-Id: <[email protected]>
[lv: move declaration at the beginning of the block,
     define syscall]
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: b67e5cb43b64cd511785aa1b35876b5e5bf55f69
      
https://github.com/qemu/qemu/commit/b67e5cb43b64cd511785aa1b35876b5e5bf55f69
  Author: Thomas Huth <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/main.c

  Log Message:
  -----------
  linux-user/main: Use list_cpus() instead of cpu_list()

This way we can get rid of the if'deffery and the XXX comment
here (it's repeated in the list_cpus() function anyway).

Signed-off-by: Thomas Huth <[email protected]>
Reviewed-by: Richard Henderson <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: 64d06015f6f44e3338af0ab2968ef7467dd2f3ef
      
https://github.com/qemu/qemu/commit/64d06015f6f44e3338af0ab2968ef7467dd2f3ef
  Author: Thomas Weißschuh <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/qemu.h

  Log Message:
  -----------
  linux-user: Add new flag VERIFY_NONE

This can be used to validate that an address range is mapped but without
being readable or writable.

It will be used by an updated implementation of mincore().

Signed-off-by: Thomas Weißschuh <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: f443a26cc6c077f792a5114c5229020ecf44ba3b
      
https://github.com/qemu/qemu/commit/f443a26cc6c077f792a5114c5229020ecf44ba3b
  Author: Thomas Weißschuh <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/syscall.c

  Log Message:
  -----------
  linux-user: Don't require PROT_READ for mincore

The kernel does not require PROT_READ for addresses passed to mincore.
For example the fincore(1) tool from util-linux uses PROT_NONE and
currently does not work under qemu-user.

Example (with fincore(1) from util-linux 2.38):

$ fincore /proc/self/exe
RES PAGES  SIZE FILE
24K     6 22.1K /proc/self/exe

$ qemu-x86_64 /usr/bin/fincore /proc/self/exe
fincore: failed to do mincore: /proc/self/exe: Cannot allocate memory

With this patch:

$ ./build/qemu-x86_64 /usr/bin/fincore /proc/self/exe
RES PAGES  SIZE FILE
24K     6 22.1K /proc/self/exe

Signed-off-by: Thomas Weißschuh <[email protected]>
Reviewed-by: Laurent Vivier <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: a0f8d2701b205d9d7986aa555e0566b13dc18fa0
      
https://github.com/qemu/qemu/commit/a0f8d2701b205d9d7986aa555e0566b13dc18fa0
  Author: Daniil Kovalev <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/mips/cpu_loop.c

  Log Message:
  -----------
  linux-user: Fix mips fp64 executables loading

If a program requires fr1, we should set the FR bit of CP0 control status
register and add F64 hardware flag. The corresponding `else if` branch
statement is copied from the linux kernel sources (see `arch_check_elf` function
in linux/arch/mips/kernel/elf.c).

Signed-off-by: Daniil Kovalev <[email protected]>
Reviewed-by: Jiaxun Yang <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: 1e35d327890bdd117a67f79c52e637fb12bb1bf4
      
https://github.com/qemu/qemu/commit/1e35d327890bdd117a67f79c52e637fb12bb1bf4
  Author: Michael Tokarev <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/syscall.c

  Log Message:
  -----------
  linux-user: fix getgroups/setgroups allocations

linux-user getgroups(), setgroups(), getgroups32() and setgroups32()
used alloca() to allocate grouplist arrays, with unchecked gidsetsize
coming from the "guest".  With NGROUPS_MAX being 65536 (linux, and it
is common for an application to allocate NGROUPS_MAX for getgroups()),
this means a typical allocation is half the megabyte on the stack.
Which just overflows stack, which leads to immediate SIGSEGV in actual
system getgroups() implementation.

An example of such issue is aptitude, eg
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811087#72

Cap gidsetsize to NGROUPS_MAX (return EINVAL if it is larger than that),
and use heap allocation for grouplist instead of alloca().  While at it,
fix coding style and make all 4 implementations identical.

Try to not impose random limits - for example, allow gidsetsize to be
negative for getgroups() - just do not allocate negative-sized grouplist
in this case but still do actual getgroups() call.  But do not allow
negative gidsetsize for setgroups() since its argument is unsigned.

Capping by NGROUPS_MAX seems a bit arbitrary, - we can do more, it is
not an error if set size will be NGROUPS_MAX+1. But we should not allow
integer overflow for the array being allocated. Maybe it is enough to
just call g_try_new() and return ENOMEM if it fails.

Maybe there's also no need to convert setgroups() since this one is
usually smaller and known beforehand (KERN_NGROUPS_MAX is actually 63, -
this is apparently a kernel-imposed limit for runtime group set).

The patch fixes aptitude segfault mentioned above.

Signed-off-by: Michael Tokarev <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Laurent Vivier <[email protected]>


  Commit: 19200a0edf67a193275f2b194f7b3b731b3817b3
      
https://github.com/qemu/qemu/commit/19200a0edf67a193275f2b194f7b3b731b3817b3
  Author: Richard Henderson <[email protected]>
  Date:   2023-05-17 (Wed, 17 May 2023)

  Changed paths:
    M linux-user/main.c
    M linux-user/mips/cpu_loop.c
    M linux-user/qemu.h
    M linux-user/syscall.c

  Log Message:
  -----------
  Merge tag 'linux-user-for-8.1-pull-request' of https://github.com/vivier/qemu 
into staging

linux-user pull request 20230512-v4

add open_tree(), move_mount()
add /proc/cpuinfo for riscv
fixes and cleanup

# -----BEGIN PGP SIGNATURE-----
#
# iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmRkiZISHGxhdXJlbnRA
# dml2aWVyLmV1AAoJEPMMOL0/L748FdIP/RC1JaCftkP7ajAstNbZLMLegMxjUYHV
# TrdhsMOsm804ZmLgTqqfS3bJ080mIHup0xUnHBckcEtUcwaz54cJ1BAR2WlM3/8A
# t3fHMt3PDkh3OPd/3AnmpLE8XRh7yBztirPYfZc6SKqnFzT0TZrwBoQnwprEnZ5r
# c0gbrgLZLunZhrWU1BbQmuIufW1qDoQo4PzwnyZeux1fHA1/v/dx3wgSLpv3V4k6
# x0Kj8TvtMUU4/io2RqYF4jKopfhwsh0jnr9rlOmydOExalKq1VbRptJI2UC4KVOY
# MZuApF1EaZfrW+v/WSlvmzaZ/zRzP1L0X3Xh0wB4J9Rj3057/elXr6bi+R+rM46p
# xGTcti9ahWKP2J4/xrazRw2lfPsLcw/YbqVGG79AX1xLJPCiWq6lamzc/g3ptFnx
# F/RRETe65z7apzF/nzU7SDOsMdN5p4/fMb1SysLuAov5OepNVjNVWyiTgqOHB5uC
# ye+lOYkkvk+qRdMbls/fIcjDQ3C4AjoBWj4QlgRc0/Qf6ac4TkVjzPa70Y6eyzzS
# LEV9D4fXD8EZgYWENNGmbbKPNbtfqc9uR6gXdgkEsKDx/rf5IMf1d6r1C99dhB3A
# nbu0JpFKKY2lhD2oGVPDE3UQMW9DXXhZpDApUBsLNiEwfuoXZee+apH+6jc8tbn6
# r+8LFB1mM9os
# =NfIV
# -----END PGP SIGNATURE-----
# gpg: Signature made Wed 17 May 2023 01:00:18 AM PDT
# gpg:                using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Laurent Vivier <[email protected]>" [undefined]
# gpg:                 aka "Laurent Vivier <[email protected]>" [undefined]
# gpg:                 aka "Laurent Vivier (Red Hat) <[email protected]>" 
[undefined]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* tag 'linux-user-for-8.1-pull-request' of https://github.com/vivier/qemu:
  linux-user: fix getgroups/setgroups allocations
  linux-user: Fix mips fp64 executables loading
  linux-user: Don't require PROT_READ for mincore
  linux-user: Add new flag VERIFY_NONE
  linux-user/main: Use list_cpus() instead of cpu_list()
  linux-user: Add open_tree() syscall
  linux-user: Add move_mount() syscall
  linux-user: report ENOTTY for unknown ioctls
  linux-user: Emulate /proc/cpuinfo output for riscv

Signed-off-by: Richard Henderson <[email protected]>


Compare: https://github.com/qemu/qemu/compare/6972ef1440a9...19200a0edf67

Reply via email to