Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1640831 > unrolled thread
| Started by | Geliang Tang <geliangtang@gmail.com> |
|---|---|
| First post | 2017-05-13 05:20 +0200 |
| Last post | 2017-05-14 13:40 +0200 |
| Articles | 5 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH] KEYS: use memdup_user Geliang Tang <geliangtang@gmail.com> - 2017-05-13 05:20 +0200
[PATCH] usb: gadget: f_fs: use memdup_user Geliang Tang <geliangtang@gmail.com> - 2017-05-13 05:20 +0200
Re: [PATCH] usb: gadget: f_fs: use memdup_user Dan Carpenter <dan.carpenter@oracle.com> - 2017-05-13 10:10 +0200
Re: [PATCH] usb: gadget: f_fs: use memdup_user Al Viro <viro@ZenIV.linux.org.uk> - 2017-05-21 05:30 +0200
Re: [PATCH] usb: gadget: f_fs: use memdup_user Michal Nazarewicz <mina86@mina86.com> - 2017-05-14 13:40 +0200
| From | Geliang Tang <geliangtang@gmail.com> |
|---|---|
| Date | 2017-05-13 05:20 +0200 |
| Subject | [PATCH] KEYS: use memdup_user |
| Message-ID | <tGvL4-6mY-7@gated-at.bofh.it> |
Use memdup_user() helper instead of open-coding to simplify the code.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
security/keys/keyctl.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
index dd0da25..ce1574a 100644
--- a/security/keys/keyctl.c
+++ b/security/keys/keyctl.c
@@ -326,14 +326,11 @@ long keyctl_update_key(key_serial_t id,
/* pull the payload in if one was supplied */
payload = NULL;
if (_payload) {
- ret = -ENOMEM;
- payload = kmalloc(plen, GFP_KERNEL);
- if (!payload)
+ payload = memdup_user(_payload, plen);
+ if (IS_ERR(payload)) {
+ ret = PTR_ERR(payload);
goto error;
-
- ret = -EFAULT;
- if (copy_from_user(payload, _payload, plen) != 0)
- goto error2;
+ }
}
/* find the target key (which must be writable) */
--
2.9.3
[toc] | [next] | [standalone]
| From | Geliang Tang <geliangtang@gmail.com> |
|---|---|
| Date | 2017-05-13 05:20 +0200 |
| Subject | [PATCH] usb: gadget: f_fs: use memdup_user |
| Message-ID | <tGvL4-6mY-11@gated-at.bofh.it> |
| In reply to | #1640831 |
Use memdup_user() helper instead of open-coding to simplify the code.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
---
drivers/usb/gadget/function/f_fs.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
index 71dd27c..5754538 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -3692,14 +3692,9 @@ static char *ffs_prepare_buffer(const char __user *buf, size_t len)
if (unlikely(!len))
return NULL;
- data = kmalloc(len, GFP_KERNEL);
- if (unlikely(!data))
- return ERR_PTR(-ENOMEM);
-
- if (unlikely(copy_from_user(data, buf, len))) {
- kfree(data);
- return ERR_PTR(-EFAULT);
- }
+ data = memdup_user(buf, len);
+ if (unlikely(IS_ERR(data)))
+ return data;
pr_vdebug("Buffer from user space:\n");
ffs_dump_mem("", data, len);
--
2.9.3
[toc] | [prev] | [next] | [standalone]
| From | Dan Carpenter <dan.carpenter@oracle.com> |
|---|---|
| Date | 2017-05-13 10:10 +0200 |
| Subject | Re: [PATCH] usb: gadget: f_fs: use memdup_user |
| Message-ID | <tGAhH-TJ-5@gated-at.bofh.it> |
| In reply to | #1640832 |
On Sat, May 13, 2017 at 11:15:59AM +0800, Geliang Tang wrote:
> Use memdup_user() helper instead of open-coding to simplify the code.
>
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>
> ---
> drivers/usb/gadget/function/f_fs.c | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
> index 71dd27c..5754538 100644
> --- a/drivers/usb/gadget/function/f_fs.c
> +++ b/drivers/usb/gadget/function/f_fs.c
> @@ -3692,14 +3692,9 @@ static char *ffs_prepare_buffer(const char __user *buf, size_t len)
> if (unlikely(!len))
> return NULL;
>
> - data = kmalloc(len, GFP_KERNEL);
> - if (unlikely(!data))
> - return ERR_PTR(-ENOMEM);
> -
> - if (unlikely(copy_from_user(data, buf, len))) {
> - kfree(data);
> - return ERR_PTR(-EFAULT);
> - }
> + data = memdup_user(buf, len);
> + if (unlikely(IS_ERR(data)))
Don't use likely/unlikely() here. It's not a fast path.
regards,
dan carpenter
[toc] | [prev] | [next] | [standalone]
| From | Al Viro <viro@ZenIV.linux.org.uk> |
|---|---|
| Date | 2017-05-21 05:30 +0200 |
| Subject | Re: [PATCH] usb: gadget: f_fs: use memdup_user |
| Message-ID | <tJpJ8-24v-5@gated-at.bofh.it> |
| In reply to | #1640860 |
On Sat, May 13, 2017 at 11:05:30AM +0300, Dan Carpenter wrote:
> > + data = memdup_user(buf, len);
> > + if (unlikely(IS_ERR(data)))
>
> Don't use likely/unlikely() here. It's not a fast path.
More to the point,
#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
static inline bool __must_check IS_ERR(__force const void *ptr)
{
return IS_ERR_VALUE((unsigned long)ptr);
}
IOW, IS_ERR() already produces unlikely(....), fast path or not.
[toc] | [prev] | [next] | [standalone]
| From | Michal Nazarewicz <mina86@mina86.com> |
|---|---|
| Date | 2017-05-14 13:40 +0200 |
| Subject | Re: [PATCH] usb: gadget: f_fs: use memdup_user |
| Message-ID | <tH02u-10Y-7@gated-at.bofh.it> |
| In reply to | #1640832 |
On Sat, May 13 2017, Geliang Tang wrote:
> Use memdup_user() helper instead of open-coding to simplify the code.
>
> Signed-off-by: Geliang Tang <geliangtang@gmail.com>
Acked-by: Michal Nazarewicz <mina86@mina86.com>
> ---
> drivers/usb/gadget/function/f_fs.c | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
> index 71dd27c..5754538 100644
> --- a/drivers/usb/gadget/function/f_fs.c
> +++ b/drivers/usb/gadget/function/f_fs.c
> @@ -3692,14 +3692,9 @@ static char *ffs_prepare_buffer(const char __user *buf, size_t len)
> if (unlikely(!len))
> return NULL;
>
> - data = kmalloc(len, GFP_KERNEL);
> - if (unlikely(!data))
> - return ERR_PTR(-ENOMEM);
> -
> - if (unlikely(copy_from_user(data, buf, len))) {
> - kfree(data);
> - return ERR_PTR(-EFAULT);
> - }
> + data = memdup_user(buf, len);
> + if (unlikely(IS_ERR(data)))
> + return data;
>
> pr_vdebug("Buffer from user space:\n");
> ffs_dump_mem("", data, len);
--
Best regards
ミハウ “𝓶𝓲𝓷𝓪86” ナザレヴイツ
«If at first you don’t succeed, give up skydiving»
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web