qemu/hw
Christian Schoenebeck 951fe2f89f 9pfs: fix wrong errno being sent to Linux client on macOS host
Linux and macOS only share some errno definitions with equal macro
name and value. In fact most mappings for errno are completely
different on the two systems.

This patch converts some important errno values from macOS host to
corresponding Linux errno values before eventually sending such error
codes along with 'Rlerror' replies (if 9p2000.L is used that is). Not
having translated errnos before violated the 9p2000.L protocol spec,
which says:

  "
  size[4] Rlerror tag[2] ecode[4]

  ... ecode is a numerical Linux errno.
  "

  https://github.com/chaos/diod/wiki/protocol#lerror----return-error-code

This patch fixes a bunch of misbehaviours when running a Linux client
on macOS host. For instance this patch fixes:

  mount -t 9p -o posixacl ...

on Linux guest if security_mode=mapped was used for 9p server, which
refused to mount successfully, because macOS returned ENOATTR==93
when client tried to retrieve POSIX ACL xattrs, because errno 93
is defined as EPROTONOSUPPORT==93 on Linux, so Linux client believed
that xattrs were not supported by filesystem on host in general.

Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Link: https://lore.kernel.org/qemu-devel/20220421124835.3e664669@bahia/
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Message-Id: <b322ab298a62069e527d2b032028bdc9115afacd.1651228001.git.qemu_oss@crudebyte.com>
2022-05-01 14:07:03 +02:00
..
9pfs 9pfs: fix wrong errno being sent to Linux client on macOS host 2022-05-01 14:07:03 +02:00
acpi acpi: fix acpi_index migration 2022-04-06 20:03:26 +01:00
adc hw/adc: Add basic Aspeed ADC model 2021-10-12 08:20:08 +02:00
alpha Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
arm hw/core: Move the ARM sysbus-fdt to core 2022-04-29 10:48:26 +10:00
audio * Fix stack-overflow due to recursive DMA in intel-hda (CVE-2021-3611) 2022-03-22 20:45:30 +00:00
avr Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
block aspeed queue: 2022-03-09 18:06:40 +00:00
char hw/char: fix qcode array bounds check in ESCC impl 2022-04-26 16:12:26 +01:00
core hw/core: Move the ARM sysbus-fdt to core 2022-04-29 10:48:26 +10:00
cpu cpu/core: Fix "help" of CPU core device types 2021-04-09 16:05:16 -04:00
cris Do not include exec/address-spaces.h if it's not really necessary 2021-05-02 17:24:51 +02:00
display hw/display/vmware_vga: do not discard screen updates 2022-04-22 11:47:08 +02:00
dma Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
gpio hw: aspeed_gpio: Cleanup stray semicolon after switch 2022-03-08 09:18:11 +01:00
hppa Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
hyperv hw/hyperv: remove needless qemu-common.h include 2022-04-21 16:56:55 +04:00
i2c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
i386 i386: firmware parsing and sev setup for -bios loaded firmware 2022-04-27 07:51:01 +02:00
ide MIPS patches queue 2022-03-09 09:13:39 +00:00
input Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
intc hw/intc: Vectored Interrupt Controller (VIC) 2022-04-26 08:17:05 -07:00
ipack qbus: Rename qbus_create_inplace() to qbus_init() 2021-09-30 13:42:10 +01:00
ipmi hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
isa hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
m68k hw: Add compat machines for 7.1 2022-04-20 09:36:24 +02:00
mem Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
microblaze Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
mips Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
misc Misc cleanups 2022-04-21 09:27:54 -07:00
net util/log: Remove qemu_log_flush 2022-04-20 10:51:11 -07:00
nios2 hw/nios2: Machine with a Vectored Interrupt Controller 2022-04-26 08:17:05 -07:00
nubus qbus: Rename qbus_create_inplace() to qbus_init() 2021-09-30 13:42:10 +01:00
nvme Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
nvram Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
openrisc hw/openrisc/openrisc_sim: Add support for initrd loading 2022-02-26 10:39:36 +09:00
pci pcie: Don't try triggering a LSI when not defined 2022-04-20 18:00:30 -03:00
pci-bridge pci: expose TYPE_XIO3130_DOWNSTREAM name 2022-03-06 05:08:23 -05:00
pci-host ppc/pnv: Remove LSI on the PCIE host bridge 2022-04-20 18:00:30 -03:00
pcmcia hw/pcmcia: Do not register PCMCIA type if not required 2021-05-02 17:24:50 +02:00
ppc hw/ppc: change indentation to spaces from TABs 2022-04-20 18:00:30 -03:00
rdma hw/pvrdma: Some cosmetic fixes 2022-04-26 12:25:14 +02:00
remote Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
riscv hw/riscv: Enable TPM backends 2022-04-29 10:48:48 +10:00
rtc Replace qemu_gettimeofday() with g_get_real_time() 2022-04-06 10:50:37 +02:00
rx hw/rx: rx-gdbsim DTB load address aligned of 16byte. 2022-04-21 10:06:42 -07:00
s390x hw: Add compat machines for 7.1 2022-04-20 09:36:24 +02:00
scsi Replace qemu_real_host_page variables with inlined functions 2022-04-06 10:50:38 +02:00
sd Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
sensor hw/sensor: add Renesas raa228000 device 2022-03-08 18:46:48 +01:00
sh4 Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
smbios hw/smbios: Add table 4 parameter, "processor-id" 2022-03-06 05:28:55 -05:00
sparc Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
sparc64 Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
ssi hw/ssi: Add Ibex SPI device model 2022-04-22 10:35:16 +10:00
timer timer: cadence_ttc: Break out header file to allow embedding 2022-04-21 11:37:03 +01:00
tpm Replace qemu_real_host_page variables with inlined functions 2022-04-06 10:50:38 +02:00
tricore hw/tricore: fix inclusion of tricore_testboard 2021-07-20 20:10:21 +02:00
usb Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
vfio Replace qemu_real_host_page variables with inlined functions 2022-04-06 10:50:38 +02:00
virtio vdpa: Add missing tracing to batch mapping functions 2022-04-26 12:32:47 +02:00
watchdog watchdog: remove select_watchdog_action 2021-11-02 15:57:27 +01:00
xen meson: remove CONFIG_XEN_PCI_PASSTHROUGH from config-target.h 2022-04-28 08:52:22 +02:00
xenpv meson: convert hw/arch* 2020-08-21 06:30:33 -04:00
xtensa Replace TARGET_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
Kconfig hw/arm: xlnx-zcu102: Add Xilinx eFUSE device 2021-09-30 13:42:10 +01:00
meson.build sensor: Move hardware sensors from misc to a sensor directory 2021-06-17 07:10:32 -05:00