linux_dsm_epyc7002/drivers/infiniband/ulp/ipoib
Erez Shitrit 439000892e IB/ipoib: Avoid memory leak if the SA returns a different DGID
The ipoib path database is organized around DGIDs from the LLADDR, but the
SA is free to return a different GID when asked for path. This causes a
bug because the SA's modified DGID is copied into the database key, even
though it is no longer the correct lookup key, causing a memory leak and
other malfunctions.

Ensure the database key does not change after the SA query completes.

Demonstration of the bug is as  follows
ipoib wants to send to GID fe80:0000:0000:0000:0002:c903:00ef:5ee2, it
creates new record in the DB with that gid as a key, and issues a new
request to the SM.
Now, the SM from some reason returns path-record with other SGID (for
example, 2001:0000:0000:0000:0002:c903:00ef:5ee2 that contains the local
subnet prefix) now ipoib will overwrite the current entry with the new
one, and if new request to the original GID arrives ipoib  will not find
it in the DB (was overwritten) and will create new record that in its
turn will also be overwritten by the response from the SM, and so on
till the driver eats all the device memory.

Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2017-12-18 15:37:05 -07:00
..
ipoib_cm.c IB/ipoib: Replace printk with pr_warn 2017-12-11 16:19:43 -07:00
ipoib_ethtool.c RDMA/core: Rename kernel modify_cq to better describe its usage 2017-11-13 16:59:22 -05:00
ipoib_fs.c IB/SA: Add OPA path record type 2017-05-01 14:39:02 -04:00
ipoib_ib.c IB/ipoib: Use NAPI in UD/TX flows 2017-10-25 13:36:50 -04:00
ipoib_main.c IB/ipoib: Avoid memory leak if the SA returns a different DGID 2017-12-18 15:37:05 -07: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: Replace printk with pr_warn 2017-12-11 16:19:43 -07: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: Change number of TX wqe to 64 2017-10-25 13:36:50 -04:00
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00