diff options
Diffstat (limited to 'include/rdma/ib_verbs.h')
| -rw-r--r-- | include/rdma/ib_verbs.h | 11 | 
1 files changed, 3 insertions, 8 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 8e90dd28bb75..e1f96737c2a1 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -2115,22 +2115,17 @@ static inline bool ib_is_udata_cleared(struct ib_udata *udata,  				       size_t len)  {  	const void __user *p = udata->inbuf + offset; -	bool ret = false; +	bool ret;  	u8 *buf;  	if (len > USHRT_MAX)  		return false; -	buf = kmalloc(len, GFP_KERNEL); -	if (!buf) +	buf = memdup_user(p, len); +	if (IS_ERR(buf))  		return false; -	if (copy_from_user(buf, p, len)) -		goto free; -  	ret = !memchr_inv(buf, 0, len); - -free:  	kfree(buf);  	return ret;  }  | 
