]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
IB/core: Make ib_mad_client_id atomic
authorHåkon Bugge <haakon.bugge@oracle.com>
Wed, 18 Apr 2018 14:24:50 +0000 (16:24 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Mon, 1 Oct 2018 12:56:04 +0000 (14:56 +0200)
commit918ded895e78d5967b28625135e500f79528e618
tree1a66feba90269eee39074752516d84f444f0b19f
parentf3f1b5a6b33e5e078107026f458dd23050f33b9d
IB/core: Make ib_mad_client_id atomic

BugLink: http://bugs.launchpad.net/bugs/1794889
[ Upstream commit db82476f37413eaeff5f836a9d8b022d6544accf ]

Currently, the kernel protects access to the agent ID allocator on a per
port basis using a spinlock, so it is impossible for two apps/threads on
the same port to get the same TID, but it is entirely possible for two
threads on different ports to end up with the same TID.

As this can be confusing (regardless of it being legal according to the
IB Spec 1.3, C13-18.1.1, in section 13.4.6.4 - TransactionID usage),
and as the rdma-core user space API for /dev/umad devices implies unique
TIDs even across ports, make the TID an atomic type so that no two
allocations, regardless of port number, will be the same.

Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
Reviewed-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Zhu Yanjun <yanjun.zhu@oracle.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/infiniband/core/mad.c