Message ID | 3a5989cb-5a01-f502-c7fc-c489079ee73e@users.sourceforge.net (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 8/22/2016 12:30 PM, SF Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Mon, 22 Aug 2016 18:23:24 +0200 > > * 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> Applied, thanks.
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 6f667dd..0d8100f 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -2199,22 +2199,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; }