• J
    staging: android: fix mem leaks in __persistent_ram_init() · 474a8988
    Jesper Juhl 提交于
    If, in __persistent_ram_init(), the call to
    persistent_ram_buffer_init() fails or the call to
    persistent_ram_init_ecc() fails then we fail to free the memory we
    allocated to 'prz' with kzalloc() - thus leaking it.
    
    To prevent the leaks I consolidated all error exits from the function
    at a 'err:' label at the end and made all error cases jump to that
    label where we can then make sure we always free 'prz'. This is safe
    since all the situations where the code bails out happen before 'prz'
    has been stored anywhere and although we'll do a redundant kfree(NULL)
    call in the case of kzalloc() itself failing that's OK since kfree()
    deals gracefully with NULL pointers and I felt it was more important
    to keep all error exits at a single location than to avoid that one
    harmless/redundant kfree() on a error path.
    Signed-off-by: NJesper Juhl <jj@chaosbits.net>
    Acked-by: NColin Cross <ccross@android.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    474a8988
persistent_ram.c 11.5 KB