linux_dsm_epyc7002/drivers/infiniband/ulp/ipoib
Alex Estrin 612601d001 Revert "IB/ipoib: Update broadcast object if PKey value was changed in index 0"
commit 9a9b811269 will cause core to fail UD QP from being destroyed
on ipoib unload, therefore cause resources leakage.
On pkey change event above patch modifies mgid before calling underlying
driver to detach it from QP. Drivers' detach_mcast() will fail to find
modified mgid it was never given to attach in a first place.
Core qp->usecnt will never go down, so ib_destroy_qp() will fail.

IPoIB driver actually does take care of new broadcast mgid based on new
pkey by destroying an old mcast object in ipoib_mcast_dev_flush())
....
	if (priv->broadcast) {
		rb_erase(&priv->broadcast->rb_node, &priv->multicast_tree);
		list_add_tail(&priv->broadcast->list, &remove_list);
		priv->broadcast = NULL;
	}
...

then in restarted ipoib_macst_join_task() creating a new broadcast mcast
object, sending join request and on completion tells the driver to attach
to reinitialized QP:
...
if (!priv->broadcast) {
...
	broadcast = ipoib_mcast_alloc(dev, 0);
...
	memcpy(broadcast->mcmember.mgid.raw, priv->dev->broadcast + 4,
	       sizeof (union ib_gid));
	priv->broadcast = broadcast;
...

Fixes: 9a9b811269 ("IB/ipoib: Update broadcast object if PKey value was changed in index 0")
Cc: stable@vger.kernel.org
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Alex Estrin <alex.estrin@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2017-09-27 11:10:36 -04:00
..
ipoib_cm.c IB/ipoib: Suppress the retry related completion errors 2017-09-22 13:12:36 -04:00
ipoib_ethtool.c Merge branch 'k.o/for-4.13-rc' into k.o/for-next 2017-08-18 14:12:04 -04:00
ipoib_fs.c IB/SA: Add OPA path record type 2017-05-01 14:39:02 -04:00
ipoib_ib.c Revert "IB/ipoib: Update broadcast object if PKey value was changed in index 0" 2017-09-27 11:10:36 -04:00
ipoib_main.c IB/ipoib: Fix inconsistency with free_netdev and free_rdma_netdev 2017-09-25 11:47:24 -04:00
ipoib_multicast.c IB/ipoib: Make sure no in-flight joins while leaving that mcast 2017-07-23 09:45:11 +03:00
ipoib_netlink.c net: add netlink_ext_ack argument to rtnl_link_ops.changelink 2017-06-26 23:13:22 -04:00
ipoib_verbs.c IB/IPoIB: Support acceleration options callbacks 2017-04-20 15:19:44 -04:00
ipoib_vlan.c IB/ipoib: Fix inconsistency with free_netdev and free_rdma_netdev 2017-09-25 11:47:24 -04:00
ipoib.h IB/ipoib: Sync between remove_one to sysfs calls that use rtnl_lock 2017-08-24 16:31:08 -04:00
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
Makefile IB/ipoib: Add rtnl_link_ops support 2012-09-20 16:49:17 -04:00