]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: call ib_umem_get with the right access
authorAmir Vadai <amirv@mellanox.co.il>
Sun, 17 Oct 2010 17:48:38 +0000 (19:48 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:05:28 +0000 (05:05 -0700)
Signed-off-by: Amir Vadai <amirv@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_zcopy.c

index c5253d9b1ae3c0b1e0e09f3316d751ff880211dd..bae837c31d2412f8f5cf6ac07e14d72a318fdd5c 100644 (file)
@@ -404,7 +404,7 @@ static unsigned long sdp_get_max_memlockable_bytes(unsigned long offset)
 }
 
 static int sdp_alloc_fmr(struct sock *sk, void *uaddr, size_t len,
-       struct ib_pool_fmr **_fmr, struct ib_umem **_umem)
+       struct ib_pool_fmr **_fmr, struct ib_umem **_umem, int access)
 {
        struct ib_pool_fmr *fmr;
        struct ib_umem *umem;
@@ -432,7 +432,7 @@ static int sdp_alloc_fmr(struct sock *sk, void *uaddr, size_t len,
                        uaddr, len, max_lockable_bytes);
 
        umem = ib_umem_get(&sdp_sk(sk)->context, (unsigned long)uaddr, len,
-               IB_ACCESS_REMOTE_WRITE, 0);
+               access, 0);
 
        if (IS_ERR(umem)) {
                rc = PTR_ERR(umem);
@@ -462,7 +462,7 @@ static int sdp_alloc_fmr(struct sock *sk, void *uaddr, size_t len,
                                pages[n++] = ib_sg_dma_address(dev,
                                                &chunk->page_list[j]) +
                                        umem->page_size * k;
-
+                               BUG_ON(n >= SDP_FMR_SIZE);
                        }
                }
        }
@@ -563,7 +563,8 @@ int sdp_rdma_to_iovec(struct sock *sk, struct iovec *iov, struct sk_buff *skb,
                len = rx_sa->len;
        }
 
-       rc = sdp_alloc_fmr(sk, iov->iov_base, len, &rx_sa->fmr, &rx_sa->umem);
+       rc = sdp_alloc_fmr(sk, iov->iov_base, len, &rx_sa->fmr, &rx_sa->umem,
+                       IB_ACCESS_LOCAL_WRITE);
        if (rc) {
                sdp_dbg_data(sk, "Error allocating fmr: %d\n", rc);
                goto err_alloc_fmr;
@@ -629,7 +630,7 @@ static int do_sdp_sendmsg_zcopy(struct sock *sk, struct tx_srcavail_state *tx_sa
        unsigned long lock_flags;
 
        rc = sdp_alloc_fmr(sk, iov->iov_base, iov->iov_len,
-                       &tx_sa->fmr, &tx_sa->umem);
+                       &tx_sa->fmr, &tx_sa->umem, IB_ACCESS_REMOTE_READ);
        if (unlikely(rc)) {
                sdp_dbg_data(sk, "Error allocating fmr: %d\n", rc);
                goto err_alloc_fmr;