eal/linux: handle UIO read failure in interrupt handler
authorLuca Boccassi <bluca@debian.org>
Wed, 31 Oct 2018 18:39:45 +0000 (18:39 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 2 Nov 2018 09:50:49 +0000 (10:50 +0100)
commit349ac52bbc5264d774c7e28c62c4e3941055b9c4
treeb08c1a9808c8e3c91f38097cc782166eebe537e4
parent6c99085d972b5f0fddf9f986ea8907ed5dafd086
eal/linux: handle UIO read failure in interrupt handler

If a device is unplugged while an interrupt is pending, the
read call to the uio device to remove it from the poll wait list
can fail resulting in it being continually polled forever. This
change checks for the read failing and if so, unregisters the device
as an interrupt source and causes the wait list to be rebuilt.

This race has been reported and observed in production.

Fixes: 0a45657a6794 ("pci: rework interrupt handling")
Cc: stable@dpdk.org
Signed-off-by: Brian Russell <brussell@brocade.com>
Signed-off-by: Luca Boccassi <bluca@debian.org>
lib/librte_eal/linuxapp/eal/eal_interrupts.c