• kiyin(尹亮)'s avatar
    perf/core: Fix a memory leak in perf_event_parse_addr_filter() · 7bdb157c
    kiyin(尹亮) authored
    As shown through runtime testing, the "filename" allocation is not
    always freed in perf_event_parse_addr_filter().
    
    There are three possible ways that this could happen:
    
     - It could be allocated twice on subsequent iterations through the loop,
     - or leaked on the success path,
     - or on the failure path.
    
    Clean up the code flow to make it obvious that 'filename' is always
    freed in the reallocation path and in the two return paths as well.
    
    We rely on the fact that kfree(NULL) is NOP and filename is initialized
    with NULL.
    
    This fixes the leak. No other side effects expected.
    
    [ Dan Carpenter: cleaned up the code flow & added a changelog. ]
    [ Ingo Molnar: updated the changelog some more. ]
    
    Fixes: 375637bc ("perf/core: Introduce address range filtering")
    Signed-off-by: default avatar"kiyin(尹亮)" <kiyin@tencent.com>
    Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: "Srivatsa S. Bhat" <srivatsa@csail.mit.edu>
    Cc: Anthony Liguori <aliguori@amazon.com>
    --
     kernel/events/core.c | 12 +++++-------
     1 file changed, 5 insertions(+), 7 deletions(-)
    7bdb157c
core.c 311 KB