lkml.org 
[lkml]   [2018]   [Jun]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v3 2/2] IB/mad: Use IDR for agent IDs
On Wed, Jun 13, 2018 at 05:34:03AM -0700, willy@infradead.org wrote:
> Allocate agent IDs from a global IDR instead of an atomic variable.
> This eliminates the possibility of reusing an ID which is already in
> use after 4 billion registrations. We limit the assigned ID to be less
> than 2^24 as the mlx4 driver uses the most significant byte of the agent
> ID to store the slave number. Users unlucky enough to see a collision
> between agent numbers and slave numbers see messages like:
>
> mlx4_ib: egress mad has non-null tid msb:1 class:4 slave:0
>
> and the MAD layer stops working.
>
> We look up the agent under protection of the RCU lock, which means we
> have to free the agent using kfree_rcu, and only increment the reference
> counter if it is not 0.
>
> Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
> Reported-by: Hans Westgaard Ry <hans.westgaard.ry@oracle.com>
> Acked-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
> Tested-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
> ---
> drivers/infiniband/core/mad.c | 83 ++++++++++++++++++------------
> drivers/infiniband/core/mad_priv.h | 7 +--
> 2 files changed, 55 insertions(+), 35 deletions(-)

Applied to for-next, thanks everyone

Jason

\
 
 \ /
  Last update: 2018-06-18 19:26    [W:0.053 / U:0.680 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site