• Wenwen Wang's avatar
    block/bio-integrity: fix a memory leak bug · e7bf90e5
    Wenwen Wang authored
    In bio_integrity_prep(), a kernel buffer is allocated through kmalloc() to
    hold integrity metadata. Later on, the buffer will be attached to the bio
    structure through bio_integrity_add_page(), which returns the number of
    bytes of integrity metadata attached. Due to unexpected situations,
    bio_integrity_add_page() may return 0. As a result, bio_integrity_prep()
    needs to be terminated with 'false' returned to indicate this error.
    However, the allocated kernel buffer is not freed on this execution path,
    leading to a memory leak.
    
    To fix this issue, free the allocated buffer before returning from
    bio_integrity_prep().
    Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
    Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: default avatarWenwen Wang <wenwen@cs.uga.edu>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    e7bf90e5
bio-integrity.c 12.3 KB