Commit 3a4ef2e2 authored by Leon Romanovsky's avatar Leon Romanovsky Committed by Jason Gunthorpe

RDMA/rdmavt: Catch use-after-free access of AH structures

Prior to commit d3456914 ("RDMA: Handle AH allocations by IB/core"),
AH destroy path is rdmavt returned -EBUSY warning to application and
caused to potential leakage of kernel memory of AH structure.

After that commit, the AH structure is always freed but such early return
in driver code can potentially cause to use-after-free error.

Add warning to catch such situation to help driver developers to fix AH
release path.
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 943bd984
...@@ -141,8 +141,7 @@ void rvt_destroy_ah(struct ib_ah *ibah, u32 destroy_flags) ...@@ -141,8 +141,7 @@ void rvt_destroy_ah(struct ib_ah *ibah, u32 destroy_flags)
struct rvt_ah *ah = ibah_to_rvtah(ibah); struct rvt_ah *ah = ibah_to_rvtah(ibah);
unsigned long flags; unsigned long flags;
if (atomic_read(&ah->refcount) != 0) WARN_ON_ONCE(atomic_read(&ah->refcount));
return;
spin_lock_irqsave(&dev->n_ahs_lock, flags); spin_lock_irqsave(&dev->n_ahs_lock, flags);
dev->n_ahs_allocated--; dev->n_ahs_allocated--;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment