From: Eldad Zinger Date: Sun, 24 Oct 2010 09:19:24 +0000 (+0200) Subject: sdp: fix support for a case of no locking capabilities X-Git-Tag: v4.1.12-92~264^2~5^2~72 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=5880cb4efe7721e9dd25aea2fd4c6413f02d44f5;p=users%2Fjedix%2Flinux-maple.git sdp: fix support for a case of no locking capabilities Signed-off-by: Eldad Zinger --- diff --git a/drivers/infiniband/ulp/sdp/sdp_zcopy.c b/drivers/infiniband/ulp/sdp/sdp_zcopy.c index 477e8a3d8f078..cc1a40c9be587 100644 --- a/drivers/infiniband/ulp/sdp/sdp_zcopy.c +++ b/drivers/infiniband/ulp/sdp/sdp_zcopy.c @@ -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);