]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: fix support for a case of no locking capabilities
authorEldad Zinger <eldadz@mellanox.co.il>
Sun, 24 Oct 2010 09:19:24 +0000 (11:19 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:05:31 +0000 (05:05 -0700)
Signed-off-by: Eldad Zinger <eldadz@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_zcopy.c

index 477e8a3d8f078b7e7bf8ae1a3ce3f0114678cfa1..cc1a40c9be5875034f20acc6a8a11172beb631f2 100644 (file)
@@ -408,7 +408,7 @@ static unsigned long sdp_get_max_memlockable_bytes(unsigned long offset)
        lock_limit = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur;
        avail = lock_limit - (current->mm->locked_vm << PAGE_SHIFT);
 
-       return avail - offset;
+       return avail < offset ? 0 : avail - offset;
 }
 
 static int sdp_alloc_fmr(struct sock *sk, void *uaddr, size_t len,
@@ -436,6 +436,9 @@ static int sdp_alloc_fmr(struct sock *sk, void *uaddr, size_t len,
                len = max_lockable_bytes;
        }
 
+       if (unlikely(len == 0))
+               return -EAGAIN;
+
        sdp_dbg_data(sk, "user buf: %p, len:0x%zx max_lockable_bytes: 0x%lx\n",
                        uaddr, len, max_lockable_bytes);