Re: [PATCH] RDMA: fix use-after-free in rxe_queue_cleanup

From: Jason Gunthorpe
Date: Thu Nov 25 2021 - 12:28:01 EST


On Sun, Nov 21, 2021 at 11:22:39PM +0300, Pavel Skripkin wrote:
> On error handling path in rxe_qp_from_init() qp->sq.queue is freed and
> then rxe_create_qp() will drop last reference to this object. qp clean
> up function will try to free this queue one time and it causes UAF bug.
>
> Fix it by zeroing queue pointer after freeing queue in
> rxe_qp_from_init().
>
> Fixes: 514aee660df4 ("RDMA: Globally allocate and release QP memory")
> Reported-by: syzbot+aab53008a5adf26abe91@xxxxxxxxxxxxxxxxxxxxxxxxx
> Signed-off-by: Pavel Skripkin <paskripkin@xxxxxxxxx>
> Reviewed-by: Zhu Yanjun <zyjzyj2000@xxxxxxxxx>
> ---
> drivers/infiniband/sw/rxe/rxe_qp.c | 1 +
> 1 file changed, 1 insertion(+)

Applied to for-next, thanks

Jason