milos-linux/drivers
Oleksandr Andrushchenko ce2f46f353 xen/gntdev: fix unmap notification order
While working with Xen's libxenvchan library I have faced an issue with
unmap notifications sent in wrong order if both UNMAP_NOTIFY_SEND_EVENT
and UNMAP_NOTIFY_CLEAR_BYTE were requested: first we send an event channel
notification and then clear the notification byte which renders in the below
inconsistency (cli_live is the byte which was requested to be cleared on unmap):

[  444.514243] gntdev_put_map UNMAP_NOTIFY_SEND_EVENT map->notify.event 6
libxenvchan_is_open cli_live 1
[  444.515239] __unmap_grant_pages UNMAP_NOTIFY_CLEAR_BYTE at 14

Thus it is not possible to reliably implement the checks like
- wait for the notification (UNMAP_NOTIFY_SEND_EVENT)
- check the variable (UNMAP_NOTIFY_CLEAR_BYTE)
because it is possible that the variable gets checked before it is cleared
by the kernel.

To fix that we need to re-order the notifications, so the variable is first
gets cleared and then the event channel notification is sent.
With this fix I can see the correct order of execution:

[   54.522611] __unmap_grant_pages UNMAP_NOTIFY_CLEAR_BYTE at 14
[   54.537966] gntdev_put_map UNMAP_NOTIFY_SEND_EVENT map->notify.event 6
libxenvchan_is_open cli_live 0

Cc: stable@vger.kernel.org
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Link: https://lore.kernel.org/r/20211210092817.580718-1-andr2000@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
2022-01-06 08:52:22 +01:00
..
accessibility
acpi
amba
android binder: fix async_free_space accounting for empty parcels 2021-12-21 11:07:34 +01:00
ata libata: if T_LENGTH is zero, dma direction should be DMA_NONE 2021-12-17 09:32:13 +09:00
atm
auxdisplay
base PM: sleep: Fix error handling in dpm_prepare() 2021-12-17 18:36:08 +01:00
bcma
block xen/blkfront: harden blkfront against event channel storms 2021-12-16 08:24:08 +01:00
bluetooth
bus Some new drivers changes for the Allwinner SoCs, fixing the shutdown 2021-12-17 16:04:54 +01:00
cdrom
char Fix some IPMI crashes 2021-12-22 10:11:17 -08:00
clk
clocksource clocksource/drivers/arm_arch_timer: Force inlining of erratum_set_next_event_generic() 2021-12-10 17:47:00 +01:00
comedi
connector
counter
cpufreq
cpuidle
crypto crypto: qat - do not handle PFVF sources for qat_4xxx 2021-12-17 13:11:54 +11:00
cxl
dax
dca
devfreq
dio
dma dmaengine: st_fdma: fix MODULE_ALIAS 2021-12-13 13:18:48 +05:30
dma-buf
edac
eisa
extcon
firewire
firmware firmware: arm_scpi: Fix string overflow in SCPI genpd driver 2021-12-13 15:17:37 +01:00
fpga
fsi
gnss
gpio gpio: virtio: remove timeout 2021-12-21 16:22:58 +01:00
gpu Merge branch 'drm-misc-fixes' of ssh://git.freedesktop.org/git/drm/drm-misc into drm-fixes 2021-12-31 11:40:29 +10:00
greybus
hid HID: potential dereference of null pointer 2021-12-20 11:26:14 +01:00
hsi
hv
hwmon hwmon: (lm90) Do not report 'busy' status bit as alarm 2021-12-12 16:22:53 -08:00
hwspinlock
hwtracing
i2c i2c: validate user data in compat ioctl 2021-12-31 14:28:22 +01:00
i3c
idle
iio
infiniband RDMA/hns: Replace kfree() with kvfree() 2021-12-14 20:13:29 -04:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2022-01-01 10:21:49 -08:00
interconnect
iommu
ipack
irqchip irqchip/irq-bcm7120-l2: Add put_device() after of_find_device_by_node() 2021-12-10 13:23:13 +00:00
isdn mISDN: change function names to avoid conflicts 2021-12-28 12:12:04 +00:00
leds
macintosh
mailbox
mcb
md block-5.16-2021-12-17 2021-12-17 11:46:07 -08:00
media
memory
memstick
message
mfd
misc
mmc mmc: mmci: stm32: clear DLYB_CR after sending tuning command 2021-12-21 13:03:51 +01:00
most
mtd Revert "mtd_blkdevs: don't scan partitions for plain mtdblock" 2021-12-10 11:52:34 -07:00
mux
net fsl/fman: Fix missing put_device() call in fman_port_probe 2021-12-30 13:34:06 +00:00
nfc NFC: st21nfca: Fix memory leak in device probe and remove 2021-12-28 12:40:20 +00:00
ntb
nubus
nvdimm
nvme
nvmem
of
opp
parisc
parport
pci - Clear the PCI_MSIX_FLAGS_MASKALL bit too on the error path so that it 2021-12-19 12:28:46 -08:00
pcmcia
perf
phy
pinctrl pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines 2021-12-16 04:14:56 +01:00
platform platform-drivers-x86 for v5.16-4 2021-12-24 08:58:23 -08:00
pnp
power
powercap
pps
ps3
ptp
pwm
rapidio
ras
regulator
remoteproc
reset
rpmsg
rtc
s390
sbus
scsi SCSI fixes on 20211231 2021-12-31 09:22:25 -08:00
sh
siox
slimbus
soc soc/tegra: Fixes for v5.16-rc6 2021-12-16 15:02:26 +01:00
soundwire
spi spi: Fix for v5.16 2021-12-20 10:23:19 -08:00
spmi
ssb
staging
target
tc
tee ARM: SoC fixes for 5.16, part 4 2021-12-23 09:22:34 -08:00
thermal
thunderbolt
tty Merge branch 'xsa' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip 2021-12-20 07:42:21 -08:00
uio
usb usb: typec: ucsi: Only check the contract if there is a connection 2021-12-21 16:30:53 +01:00
vdpa
vfio
vhost
video
virt nitro_enclaves: Use get_user_pages_unlocked() call to handle mmap assert 2021-12-21 11:08:19 +01:00
virtio
visorbus
vlynq
vme
w1
watchdog
xen xen/gntdev: fix unmap notification order 2022-01-06 08:52:22 +01:00
zorro
Kconfig
Makefile