IB/core: Use memdup_user() rather than duplicating its implementation
* Reuse existing functionality from memdup_user() instead of keeping duplicate source code. This issue was detected by using the Coccinelle software. * The local variable "ret" will be set to an appropriate value a bit later. Thus omit the explicit initialisation at the beginning. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
48ef5865d0
commit
92d27ae6b3
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue