]> git.baikalelectronics.ru Git - 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)
committerDoug Ledford <dledford@redhat.com>
Mon, 30 Apr 2018 17:07:28 +0000 (13:07 -0400)
commitcb7dcc5d569779b3836a7c2f1cf971d73722639e
treef75548e4ce7dc6a9ff7e14711631f8a72365f32f
parent7b40ec886d3e04c1dc23f3a07b4e031c456f3442
IB/core: Make ib_mad_client_id atomic

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>
drivers/infiniband/core/mad.c