struct ib_umem         *umem;
        unsigned long           user_virt;
        int                     refcnt;
+       struct mm_struct        *mm;
  };
  
 -int mlx5_ib_db_map_user(struct mlx5_ib_ucontext *context,
 -                      struct ib_udata *udata, unsigned long virt,
 +int mlx5_ib_db_map_user(struct mlx5_ib_ucontext *context, unsigned long virt,
                        struct mlx5_db *db)
  {
        struct mlx5_ib_user_db_page *page;
 
  
        ret = copy_data(qp->pd, IB_ACCESS_LOCAL_WRITE,
                        &wqe->dma, payload_addr(pkt),
 -                      payload_size(pkt), to_mr_obj, NULL);
 +                      payload_size(pkt), RXE_TO_MR_OBJ, NULL);
-       if (ret)
+       if (ret) {
+               wqe->status = IB_WC_LOC_PROT_ERR;
                return COMPST_ERROR;
+       }
  
        if (wqe->dma.resid == 0 && (pkt->mask & RXE_END_MASK))
                return COMPST_COMP_ACK;
  
        ret = copy_data(qp->pd, IB_ACCESS_LOCAL_WRITE,
                        &wqe->dma, &atomic_orig,
 -                      sizeof(u64), to_mr_obj, NULL);
 +                      sizeof(u64), RXE_TO_MR_OBJ, NULL);
-       if (ret)
+       if (ret) {
+               wqe->status = IB_WC_LOC_PROT_ERR;
                return COMPST_ERROR;
-       else
-               return COMPST_COMP_ACK;
+       }
+ 
+       return COMPST_COMP_ACK;
  }
  
  static void make_send_cqe(struct rxe_qp *qp, struct rxe_send_wqe *wqe,