lkml.org 
[lkml]   [2019]   [Sep]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 2/2] perf/ring_buffer: Matching the memory allocate and free, in rb_alloc()
    From
    Date
    Currently perf_mmap_alloc_page() is used to allocate memory in
    rb_alloc(), but using free_page() to free memory in the failure path.

    It's better to use perf_mmap_free_page() instead.

    Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com>
    ---
    kernel/events/ring_buffer.c | 20 ++++++++++----------
    1 file changed, 10 insertions(+), 10 deletions(-)

    diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
    index abc145c..246c83a 100644
    --- a/kernel/events/ring_buffer.c
    +++ b/kernel/events/ring_buffer.c
    @@ -754,6 +754,14 @@ static void *perf_mmap_alloc_page(int cpu)
    return page_address(page);
    }

    +static void perf_mmap_free_page(void *addr)
    +{
    + struct page *page = virt_to_page(addr);
    +
    + page->mapping = NULL;
    + __free_page(page);
    +}
    +
    struct ring_buffer *rb_alloc(int nr_pages, long watermark, int cpu, int flags)
    {
    struct ring_buffer *rb;
    @@ -788,9 +796,9 @@ struct ring_buffer *rb_alloc(int nr_pages, long watermark, int cpu, int flags)

    fail_data_pages:
    for (i--; i >= 0; i--)
    - free_page((unsigned long)rb->data_pages[i]);
    + perf_mmap_free_page(rb->data_pages[i]);

    - free_page((unsigned long)rb->user_page);
    + perf_mmap_free_page(rb->user_page);

    fail_user_page:
    kfree(rb);
    @@ -799,14 +807,6 @@ struct ring_buffer *rb_alloc(int nr_pages, long watermark, int cpu, int flags)
    return NULL;
    }

    -static void perf_mmap_free_page(void *addr)
    -{
    - struct page *page = virt_to_page(addr);
    -
    - page->mapping = NULL;
    - __free_page(page);
    -}
    -
    void rb_free(struct ring_buffer *rb)
    {
    int i;
    --
    2.7.4
    \
     
     \ /
      Last update: 2019-09-27 10:25    [W:6.012 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site