{
        bool sq = pfault->type & MLX5_PFAULT_REQUESTOR;
        u16 wqe_index = pfault->wqe.wqe_index;
-       void *wqe = NULL, *wqe_end = NULL;
+       void *wqe, *wqe_start = NULL, *wqe_end = NULL;
        u32 bytes_mapped, total_wqe_bytes;
        struct mlx5_core_rsc_common *res;
        int resume_with_error = 1;
                goto resolve_page_fault;
        }
 
-       wqe = (void *)__get_free_page(GFP_KERNEL);
-       if (!wqe) {
+       wqe_start = (void *)__get_free_page(GFP_KERNEL);
+       if (!wqe_start) {
                mlx5_ib_err(dev, "Error allocating memory for IO page fault handling.\n");
                goto resolve_page_fault;
        }
 
+       wqe = wqe_start;
        qp = (res->res == MLX5_RES_QP) ? res_to_qp(res) : NULL;
        if (qp && sq) {
                ret = mlx5_ib_read_user_wqe_sq(qp, wqe_index, wqe, PAGE_SIZE,
                    pfault->wqe.wq_num, resume_with_error,
                    pfault->type);
        mlx5_core_res_put(res);
-       free_page((unsigned long)wqe);
+       free_page((unsigned long)wqe_start);
 }
 
 static int pages_in_range(u64 address, u32 length)