Re: [bug report] RDMA/siw: Fix SQ/RQ drain logic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 25, 2019 at 08:16:15AM +0000, Bernard Metzler wrote:
> 
> >To: bmt@xxxxxxxxxxxxxx
> >From: "Dan Carpenter" <dan.carpenter@xxxxxxxxxx>
> >Date: 10/24/2019 10:39PM
> >Cc: linux-rdma@xxxxxxxxxxxxxxx
> >Subject: [EXTERNAL] [bug report] RDMA/siw: Fix SQ/RQ drain logic
> >
> >Hello Bernard Metzler,
> >
> >The patch cf049bb31f71: "RDMA/siw: Fix SQ/RQ drain logic" from Oct 4,
> >2019, leads to the following static checker warning:
> >
> >	drivers/infiniband/sw/siw/siw_verbs.c:1079 siw_post_receive()
> >	error: locking inconsistency.  We assume 'read_sem:&qp->state_lock'
> >is both locked and unlocked at the start.
> >
> >drivers/infiniband/sw/siw/siw_verbs.c
> >   978  int siw_post_receive(struct ib_qp *base_qp, const struct
> >ib_recv_wr *wr,
> >   979                       const struct ib_recv_wr **bad_wr)
> >   980  {
> >   981          struct siw_qp *qp = to_siw_qp(base_qp);
> >   982          unsigned long flags;
> >   983          int rv = 0;
> >   984  
> >   985          if (qp->srq) {
> >   986                  *bad_wr = wr;
> >   987                  return -EOPNOTSUPP; /* what else from
> >errno.h? */
> >   988          }
> >   989          if (!qp->kernel_verbs) {
> >   990                  siw_dbg_qp(qp, "no kernel post_recv for user
> >mapped sq\n");
> >   991                  up_read(&qp->state_lock);
> >                        ^^^^^^^^^^^^^^^^^^^^^^^^
> >The patch changes the locking so this isn't held here and should be
> >released.  Should it be held, though?
> 
> Yes, this is a BUG. Thanks very much! There is no qp spinlock to 
> be held here. I moved that down to state checking. No need to
> hold the qp lock before. 
> 
> Shall I re-send, or can we just amend the patch,
> removing that single 'up_read()' line?

You need to send a new patch against for-next to fix this

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux