diff options
| author | Markus Elfring <elfring@users.sourceforge.net> | 2016-08-22 12:23:24 -0400 |
|---|---|---|
| committer | Doug Ledford <dledford@redhat.com> | 2016-08-23 12:40:13 -0400 |
| commit | 92d27ae6b3bb3491c1685fb3ca7ae1b26d81bdf4 (patch) | |
| tree | e337a55475d8899a35c3d5bc76d00b808d28a21e /include/rdma | |
| parent | 48ef5865d08fa0a36d786f2f8e12c6194d27538b (diff) | |
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>
Diffstat (limited to 'include/rdma')
| -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, | |||
| 2115 | size_t len) | 2115 | size_t len) |
| 2116 | { | 2116 | { |
| 2117 | const void __user *p = udata->inbuf + offset; | 2117 | const void __user *p = udata->inbuf + offset; |
| 2118 | bool ret = false; | 2118 | bool ret; |
| 2119 | u8 *buf; | 2119 | u8 *buf; |
| 2120 | 2120 | ||
| 2121 | if (len > USHRT_MAX) | 2121 | if (len > USHRT_MAX) |
| 2122 | return false; | 2122 | return false; |
| 2123 | 2123 | ||
| 2124 | buf = kmalloc(len, GFP_KERNEL); | 2124 | buf = memdup_user(p, len); |
| 2125 | if (!buf) | 2125 | if (IS_ERR(buf)) |
| 2126 | return false; | 2126 | return false; |
| 2127 | 2127 | ||
| 2128 | if (copy_from_user(buf, p, len)) | ||
| 2129 | goto free; | ||
| 2130 | |||
| 2131 | ret = !memchr_inv(buf, 0, len); | 2128 | ret = !memchr_inv(buf, 0, len); |
| 2132 | |||
| 2133 | free: | ||
| 2134 | kfree(buf); | 2129 | kfree(buf); |
| 2135 | return ret; | 2130 | return ret; |
| 2136 | } | 2131 | } |
