numam-dpdk/lib
Maxime Coquelin 5efb18e85f vhost: fix deadlock on port deletion
If the vhost-user application (e.g. OVS) deletes the vhost-user
port while Qemu sends a vhost-user request, a deadlock can
happen if the request handler tries to acquire vhost-user's
global mutex, which is also locked by the vhost-user port
deletion API (rte_vhost_driver_unregister).

This patch prevents the deadlock by making
rte_vhost_driver_unregister() to release the mutex and try
again if a request is being handled to give a chance to
the request handler to complete.

Fixes: 8b4b949144 ("vhost: fix dead lock on closing in server mode")
Fixes: 5fbb3941da ("vhost: introduce driver features related APIs")
Cc: stable@dpdk.org

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
Acked-by: Eelco Chaudron <echaudro@redhat.com>
2020-01-17 19:46:26 +01:00
..
librte_acl build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_bbdev build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_bitratestats build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_bpf bpf/arm: fix clang build 2019-11-21 00:30:39 +01:00
librte_cfgfile build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_cmdline build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_compressdev build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_cryptodev cryptodev: support ECPM 2020-01-15 15:01:55 +01:00
librte_distributor build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_eal ticketlock: use new API to reduce contention on aarch64 2020-01-17 12:02:21 +01:00
librte_efd build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_ethdev ethdev: add L2TPv3 over IP header to flow API 2020-01-17 19:46:26 +01:00
librte_eventdev eventdev: use custom element size rings 2020-01-19 19:32:50 +01:00
librte_fib remove blank lines at end of file 2019-11-26 00:12:08 +01:00
librte_flow_classify build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_gro build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_gso build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_hash hash: use 32-bit elements rings to save memory 2020-01-19 19:32:50 +01:00
librte_ip_frag build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_ipsec build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_jobstats build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_kni kni: fix build with Linux 4.9.x 2019-11-28 14:48:24 +01:00
librte_kvargs build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_latencystats build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_lpm build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_mbuf mbuf: extend mbuf pool private structure 2019-11-25 22:44:46 +01:00
librte_member build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_mempool build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_meter build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_metrics build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_net build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_pci build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_pdump build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_pipeline build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_port port: replace license text with SPDX tag 2019-11-28 03:02:51 +01:00
librte_power power: fix error log on guest message polling 2019-11-26 00:29:24 +01:00
librte_rawdev build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_rcu build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_reorder build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_rib build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_ring ring: support configurable element size 2020-01-19 19:32:48 +01:00
librte_sched build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_security build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_stack build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_table build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_telemetry build: remove individual library versions 2019-11-20 23:05:39 +01:00
librte_timer build: align symbols with global ABI version 2019-11-20 23:05:39 +01:00
librte_vhost vhost: fix deadlock on port deletion 2020-01-17 19:46:26 +01:00
Makefile vhost: fix build dependency on hash lib 2019-11-08 23:15:05 +01:00
meson.build build: fix soname info for 19.11 compatibility 2019-12-19 16:18:21 +01:00