Re: [PATCH] xen/pvcalls-back: fix permanently masked event channel

From: Juergen Gross
Date: Mon Feb 13 2023 - 03:19:53 EST


On 19.01.23 22:11, Volodymyr Babchuk wrote:
There is a sequence of events that can lead to a permanently masked
event channel, because xen_irq_lateeoi() is newer called. This happens
when a backend receives spurious write event from a frontend. In this
case pvcalls_conn_back_write() returns early and it does not clears the
map->write counter. As map->write > 0, pvcalls_back_ioworker() returns
without calling xen_irq_lateeoi(). This leaves the event channel in
masked state, a backend does not receive any new events from a
frontend and the whole communication stops.

Move atomic_set(&map->write, 0) to the very beginning of
pvcalls_conn_back_write() to fix this issue.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>
Reported-by: Oleksii Moisieiev <oleksii_moisieiev@xxxxxxxx>

Pushed to: xen/tip.git for-linus-6.3


Juergen

Attachment: OpenPGP_0xB0DE9DD628BF132F.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature