qemu-irix/hw
Greg Kurz 785d9ab216 9pfs: local: fix unlink of alien files in mapped-file mode
When trying to remove a file from a directory, both created in non-mapped
mode, the file remains and EBADF is returned to the guest.

This is a regression introduced by commit "df4938a6651b 9pfs: local:
unlinkat: don't follow symlinks" when fixing CVE-2016-9602. It changed the
way we unlink the metadata file from

    ret = remove("$dir/.virtfs_metadata/$name");
    if (ret < 0 && errno != ENOENT) {
         /* Error out */
    }
    /* Ignore absence of metadata */

to

    fd = openat("$dir/.virtfs_metadata")
    unlinkat(fd, "$name")
    if (ret < 0 && errno != ENOENT) {
         /* Error out */
    }
    /* Ignore absence of metadata */

If $dir was created in non-mapped mode, openat() fails with ENOENT and
we pass -1 to unlinkat(), which fails in turn with EBADF.

We just need to check the return of openat() and ignore ENOENT, in order
to restore the behaviour we had with remove().

Signed-off-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Eric Blake <eblake@redhat.com>
[groug: rewrote the comments as suggested by Eric]

(cherry picked from commit 6a87e7929f)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2017-07-31 16:56:59 -05:00
..
9pfs 9pfs: local: fix unlink of alien files in mapped-file mode 2017-07-31 16:56:59 -05:00
acpi ACPI: don't call acpi_pcihp_device_plug_cb on xen 2017-07-31 16:55:12 -05:00
adc
alpha
arm
audio
block xen: do not build backends for targets that do not support xen 2017-03-19 11:12:12 +01:00
bt
char xen: do not build backends for targets that do not support xen 2017-03-19 11:12:12 +01:00
core block: add missed aio_context_acquire into release_drive 2017-04-03 17:11:39 +02:00
cpu
cris
display qxl: add migration blocker to avoid pre-save assert 2017-04-11 08:38:17 +02:00
dma dma/rc4030: fix a mixed declarations and code warning 2017-03-20 11:20:35 +00:00
gpio
i2c
i386 trace: Avoid abuse of amdvi_mmio_read 2017-03-24 09:21:42 +00:00
ide ide: ahci: call cleanup function in ahci unit 2017-03-15 20:50:14 -04:00
input virtio-input: fix eventq batching 2017-03-27 12:14:45 +02:00
intc hw/intc/arm_gicv3_kvm: Check KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS in reset 2017-03-31 12:41:14 +01:00
ipack
ipmi ipmi: Fix macro issues 2017-04-02 21:17:47 +02:00
isa tco: do not generate an NMI 2017-04-05 17:23:52 +02:00
lm32
m68k
mem
microblaze
mips
misc hw/misc/imx6_src: Don't crash trying to reset missing CPUs 2017-03-14 16:13:22 +00:00
moxie
net e1000: disable debug by default 2017-03-31 08:48:13 +08:00
nios2 nios2: iic: Convert CPU prop to qom link 2017-03-18 18:22:54 +00:00
nvram
openrisc
pci pci: deassert intx when pci device unrealize 2017-07-31 16:43:34 -05:00
pci-bridge
pci-host
pcmcia
ppc pseries: Enforce homogeneous threads-per-core 2017-04-03 13:46:18 +10:00
s390x s390x/css: reassign subchannel if schid is changed after migration 2017-03-20 09:22:57 +01:00
scsi * MTTCG fix for win32 2017-03-27 17:34:50 +01:00
sd
sh4
smbios
sparc sparc/sparc64: grab BQL before calling cpu_check_irqs 2017-03-09 10:41:38 +00:00
sparc64 sparc/sparc64: grab BQL before calling cpu_check_irqs 2017-03-09 10:41:38 +00:00
ssi
timer
tpm
tricore
unicore32
usb usb-host: switch to LIBUSB_API_VERSION 2017-04-03 14:41:23 +01:00
vfio vfio/pci-quirks: Exclude non-ioport BAR from NVIDIA quirk 2017-04-06 16:03:26 -06:00
virtio vhost: generalize iommu memory region 2017-03-30 19:09:16 +03:00
watchdog
xen xen: do not build backends for targets that do not support xen 2017-03-19 11:12:12 +01:00
xenpv
xtensa target/xtensa: xtfpga: load DTB only when FDT support is enabled 2017-03-11 14:59:03 -08:00
Makefile.objs