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)
|
size_t len)
|
||||||
{
|
{
|
||||||
const void __user *p = udata->inbuf + offset;
|
const void __user *p = udata->inbuf + offset;
|
||||||
bool ret = false;
|
bool ret;
|
||||||
u8 *buf;
|
u8 *buf;
|
||||||
|
|
||||||
if (len > USHRT_MAX)
|
if (len > USHRT_MAX)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
buf = kmalloc(len, GFP_KERNEL);
|
buf = memdup_user(p, len);
|
||||||
if (!buf)
|
if (IS_ERR(buf))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (copy_from_user(buf, p, len))
|
|
||||||
goto free;
|
|
||||||
|
|
||||||
ret = !memchr_inv(buf, 0, len);
|
ret = !memchr_inv(buf, 0, len);
|
||||||
|
|
||||||
free:
|
|
||||||
kfree(buf);
|
kfree(buf);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue