Messages in this thread Patch in this message |  | | | From | KOSAKI Motohiro <> | | Subject | Re: [RFC][PATCH] kmemdup_from_user(): introduce | | Date | Fri, 6 Mar 2009 17:03:29 +0900 (JST) |
| |
(cc to Davi Arnaut)
> > > /** > > >+ * kmemdup_from_user - duplicate memory region from user space > > >+ * > > >+ * @src: source address in user space > > >+ * @len: number of bytes to copy > > >+ * @gfp: GFP mask to use > > >+ */ > > >+void *kmemdup_from_user(const void __user *src, size_t len, gfp_t gfp) > > >+{ > > >+ void *p; > > >+ > > >+ p = kmalloc_track_caller(len, gfp); > > > > > > Well, you use kmalloc_track_caller, instead of kmalloc as you showed > > above. :) Why don't you mention this? > > kmalloc() wrapper function must use kmalloc_track_caller().
I find another kmalloc() usage in the same file. Davi, Can you agree following patch?
== Subject: [PATCH] Don't use kmalloc() in strndup_user(). instead, use kmalloc_track_caller().
kmalloc() wrapper function should use kmalloc_track_caller() instead kmalloc().
slab.h talk about the reason.
/* * kmalloc_track_caller is a special version of kmalloc that records the * calling function of the routine calling it for slab leak tracking instead * of just the calling function (confusing, eh?). * It's useful when the call to kmalloc comes from a widely-used standard * allocator where we care about the real place the memory allocation * request comes from. */
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> --- mm/util.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/mm/util.c b/mm/util.c index 37eaccd..202da19 100644 --- a/mm/util.c +++ b/mm/util.c @@ -167,7 +167,7 @@ char *strndup_user(const char __user *s, long n) if (length > n) return ERR_PTR(-EINVAL); - p = kmalloc(length, GFP_KERNEL); + p = kmalloc_track_caller(length, GFP_KERNEL); if (!p) return ERR_PTR(-ENOMEM); -- 1.6.1.2
|  |