diff --git a/fabtests.changes b/fabtests.changes index a0d1dbd..51c872d 100644 --- a/fabtests.changes +++ b/fabtests.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Nov 8 11:46:56 UTC 2022 - Nicolas Morey-Chaisemartin + +- Add prov-net-fix-error-path-in-xnet_enable_rdm.patch to fix a deadlock + when no network interfaces are available (bsc#1205139) + ------------------------------------------------------------------- Mon Oct 10 06:47:42 UTC 2022 - Nicolas Morey-Chaisemartin diff --git a/libfabric.changes b/libfabric.changes index a0d1dbd..51c872d 100644 --- a/libfabric.changes +++ b/libfabric.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Nov 8 11:46:56 UTC 2022 - Nicolas Morey-Chaisemartin + +- Add prov-net-fix-error-path-in-xnet_enable_rdm.patch to fix a deadlock + when no network interfaces are available (bsc#1205139) + ------------------------------------------------------------------- Mon Oct 10 06:47:42 UTC 2022 - Nicolas Morey-Chaisemartin diff --git a/libfabric.spec b/libfabric.spec index 1308072..8f6733a 100644 --- a/libfabric.spec +++ b/libfabric.spec @@ -28,6 +28,7 @@ Group: Development/Libraries/C and C++ Source: %{name}-%{version}%{git_ver}.tar.bz2 Source1: baselibs.conf Patch0: libfabric-libtool.patch +Patch1: prov-net-fix-error-path-in-xnet_enable_rdm.patch URL: http://www.github.com/ofiwg/libfabric BuildRequires: autoconf BuildRequires: automake @@ -70,6 +71,7 @@ services, such as RDMA. This package contains the development files. %prep %setup -q -n %{name}-%{version}%{git_ver} %patch0 -p1 +%patch1 %build rm -f config/libtool.m4 diff --git a/prov-net-fix-error-path-in-xnet_enable_rdm.patch b/prov-net-fix-error-path-in-xnet_enable_rdm.patch new file mode 100644 index 0000000..2c24b8f --- /dev/null +++ b/prov-net-fix-error-path-in-xnet_enable_rdm.patch @@ -0,0 +1,25 @@ +commit b775a752b3b4017f39e542ef4f32576d2b018f05 +Author: Nicolas Morey-Chaisemartin +Date: Tue Nov 8 12:40:43 2022 +0100 + + prov/net: fix error path in xnet_enable_rdm + + If xnet_listen fails (happens 100% of the time on a system with no + network interface but lo), the progress lock is not released which + causes a deadlock when fi_close is called later on the endpoint. + + Signed-off-by: Nicolas Morey-Chaisemartin + +diff --git prov/net/src/xnet_rdm.c prov/net/src/xnet_rdm.c +index 77a236b51903..b5f77f068bf3 100644 +--- prov/net/src/xnet_rdm.c ++++ prov/net/src/xnet_rdm.c +@@ -711,7 +711,7 @@ static int xnet_enable_rdm(struct xnet_rdm *rdm) + + ret = xnet_listen(rdm->pep, progress); + if (ret) +- return ret; ++ goto unlock; + + /* TODO: Move updating the src_addr to pep_listen(). */ + len = sizeof(rdm->addr);