- Backport upstream patches * bnxt_re-lib-fix-the-memory-barrier-call-during-poll-cq.patch Fix memory ordering issue * bnxt_re-lib-increment-psn-in-case-of-0-length-packets.patch Fix PSN getting out of sync when sending 0 length packet * verbs-Do-not-block-QP-attr_masks-used-by-older-kernels.patch Fix bits detection to allow RDMA CM to work on older kernsl - Refresh older patches to include commit logs: * ibacm-Incorrect-list-used-for-subnet-list-causes-a-segfault.patch * ibacm-Incorrect-usage-of-BE-byte-order-of-MLID-attach-detach_mcast.patch * libibumad-umad.c-In-get_port-ignore-sysfs-rate-file-errors.patch * libqedr-fix-inline-data-copy.patch OBS-URL: https://build.opensuse.org/request/show/540247 OBS-URL: https://build.opensuse.org/package/show/science:HPC/rdma-core?expand=0&rev=59
50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
commit e733db47760bcdb59d8296fecc4e06c7d451712b
|
|
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
|
|
Date: Mon Oct 16 10:24:40 2017 -0400
|
|
|
|
ibacm: Incorrect list used for subnet list causes a segfault
|
|
|
|
Setting the provider keyword in the ibacm_opts.cfg file to something
|
|
other than 'default' will cause ibacm to segfault on startup:
|
|
|
|
ibacm[32739]: segfault at 302e40 ip 000000000040432d
|
|
sp 00007ffe4039e1c0 error 4 in ibacm[400000+c000]
|
|
|
|
To re-produce the segfault, change the provider keyword in
|
|
ibacm_opts.cfg from:
|
|
|
|
provider ibacmp default
|
|
|
|
to:
|
|
|
|
provider ibacmp 0xFE80000000000000
|
|
|
|
When adding subnets to a provider subnet list, the incorrect list is
|
|
used. The list used is the provider_list (list of all providers)
|
|
rather than the (specific) provider subnet list.
|
|
|
|
This corrupts the provider_list, and causes ibacm to crash with the
|
|
above segfault.
|
|
|
|
Use the correct list when adding subnet information to a provider.
|
|
|
|
Fixes: 26e05f8304a506 ("ibacm: use ccan/list.h")
|
|
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
|
|
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
|
|
|
|
diff --git ibacm/src/acm.c ibacm/src/acm.c
|
|
index 367a43fe..9367fe89 100644
|
|
--- ibacm/src/acm.c
|
|
+++ ibacm/src/acm.c
|
|
@@ -2585,8 +2585,8 @@ static void acm_load_prov_config(void)
|
|
return;
|
|
}
|
|
subnet->subnet_prefix = htobe64(prefix);
|
|
- list_add_after(&provider_list, &prov->entry,
|
|
- &subnet->entry);
|
|
+ list_add_tail(&prov->subnet_list,
|
|
+ &subnet->entry);
|
|
}
|
|
}
|
|
}
|