RDMA/mlx5: Fix MR cache memory leak
[ Upstream commit
e89938902927a54abebccc9537991aca5237dfaf ]
If the MR cache entry invalidation failed, then we detach this entry from
the cache, therefore we must to free the memory as well.
Allcation backtrace for the leaker:
[<
00000000d8e423b0>] alloc_cache_mr+0x23/0xc0 [mlx5_ib]
[<
000000001f21304c>] create_cache_mr+0x3f/0xf0 [mlx5_ib]
[<
000000009d6b45dc>] mlx5_ib_alloc_implicit_mr+0x41/0×210 [mlx5_ib]
[<
00000000879d0d68>] mlx5_ib_reg_user_mr+0x9e/0×6e0 [mlx5_ib]
[<
00000000be74bf89>] create_qp+0x2fc/0xf00 [ib_uverbs]
[<
000000001a532d22>] ib_uverbs_handler_UVERBS_METHOD_COUNTERS_READ+0x1d9/0×230 [ib_uverbs]
[<
0000000070f46001>] rdma_alloc_commit_uobject+0xb5/0×120 [ib_uverbs]
[<
000000006d8a0b38>] uverbs_alloc+0x2b/0xf0 [ib_uverbs]
[<
00000000075217c9>] ksysioctl+0x234/0×7d0
[<
00000000eb5c120b>] __x64_sys_ioctl+0x16/0×20
[<
00000000db135b48>] do_syscall_64+0x59/0×2e0
Fixes: 1769c4c57548 ("RDMA/mlx5: Always remove MRs from the cache before destroying them")
Link: https://lore.kernel.org/r/20201213132940.345554-2-leon@kernel.org
Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>