]> git.baikalelectronics.ru Git - kernel.git/commit
RDMA/rxe: Prevent double freeing rxe_map_set()
authorLi Zhijian <lizhijian@cn.fujitsu.com>
Tue, 28 Dec 2021 01:44:06 +0000 (09:44 +0800)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 4 Jan 2022 14:29:34 +0000 (10:29 -0400)
commit129dcbf214c02fe66a4f34fdaba28cd333e64b23
tree7393e9589e14b2601094969804e503574860ab7b
parent714806aa5ddb01864854ad8ab7144d3453fb1708
RDMA/rxe: Prevent double freeing rxe_map_set()

The same rxe_map_set could be freed twice:

rxe_reg_user_mr()
  -> rxe_mr_init_user()
    -> rxe_mr_free_map_set() # 1st

  -> rxe_drop_ref()
   ...
    -> rxe_mr_cleanup()
      -> rxe_mr_free_map_set() # 2nd

Follow normal convection and put resource cleanup either in the error
unwind of the allocator, or the overall free function. Leave the object
unchanged with a NULL cur_map_set on failure and remove the unncessary
free in rxe_mr_init_user().

Link: https://lore.kernel.org/r/20211228014406.1033444-1-lizhijian@cn.fujitsu.com
Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
Acked-by: Zhu Yanjun <zyjzyj2000@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/rxe/rxe_mr.c