lkml.org 
[lkml]   [2013]   [Oct]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 0/2] (Was: perf_event_mmap(vma) && !vma->vm_mm)
    On 10/16, Peter Zijlstra wrote:
    >
    > On Wed, Oct 16, 2013 at 10:58:00PM +0200, Oleg Nesterov wrote:
    > > OK. I'll wait for your review on this series, then send the next patch.
    > >
    >
    > Those two patches look good; thanks.

    Thanks, can I have your acks for Ingo ?

    > How about something like so on top?
    >
    > ---
    > --- a/kernel/events/core.c
    > +++ b/kernel/events/core.c
    > @@ -5103,18 +5103,16 @@ static void perf_event_mmap_event(struct
    > struct file *file = vma->vm_file;
    > int maj = 0, min = 0;
    > u64 ino = 0, gen = 0;
    > - unsigned int size;
    > + unsigned int size, len;
    > char tmp[16];
    > char *buf = NULL;
    > const char *name;
    >
    > - memset(tmp, 0, sizeof(tmp));
    > -
    > if (file) {
    > struct inode *inode;
    > dev_t dev;
    >
    > - buf = kzalloc(PATH_MAX, GFP_KERNEL);
    > + buf = kmalloc(PATH_MAX, GFP_KERNEL);
    > if (!buf) {
    > name = strncpy(tmp, "//enomem", sizeof(tmp));
    > goto got_name;
    > @@ -5160,7 +5158,15 @@ static void perf_event_mmap_event(struct
    > }
    >
    > got_name:
    > - size = ALIGN(strlen(name)+1, sizeof(u64));
    > + /*
    > + * Since our buffer works in 8 byte units we need to align our string
    > + * size to a multiple of 8. However, we must guarantee the tail end is
    > + * zero'd out to avoid leaking random bits to userspace.
    > + */
    > + len = strlen(name)+1;
    > + size = ALIGN(len, sizeof(u64));
    > + for (; len < size; len++)
    > + name[len] = '\0';

    Yes, this is almost what I meant, but:

    - name is "const char *", we need another variable

    - we do not really need "len", we can simply do

    size = strlen(name) + 1;
    while (size % sizeof(u64))
    name[size++] = '\0';

    although I won't argue if you dislike "size & 7" in while().

    - we can factor out strncpy(tmp, name).

    Could you look at 3/2 I'll send in a minute?

    Oleg.



    \
     
     \ /
      Last update: 2013-10-17 17:41    [W:3.961 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site