From 5880cb4efe7721e9dd25aea2fd4c6413f02d44f5 Mon Sep 17 00:00:00 2001 From: Eldad Zinger Date: Sun, 24 Oct 2010 11:19:24 +0200 Subject: [PATCH] sdp: fix support for a case of no locking capabilities Signed-off-by: Eldad Zinger --- drivers/infiniband/ulp/sdp/sdp_zcopy.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/ulp/sdp/sdp_zcopy.c b/drivers/infiniband/ulp/sdp/sdp_zcopy.c index 477e8a3d8f07..cc1a40c9be58 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); -- 2.50.1