lkml.org 
[lkml]   [2021]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 081/104] cdrom: gdrom: deallocate struct gdrom_unit fields in remove_gdrom
    Date
    From: Atul Gopinathan <atulgopinathan@gmail.com>

    commit d03d1021da6fe7f46efe9f2a7335564e7c9db5ab upstream.

    The fields, "toc" and "cd_info", of "struct gdrom_unit gd" are allocated
    in "probe_gdrom()". Prevent a memory leak by making sure "gd.cd_info" is
    deallocated in the "remove_gdrom()" function.

    Also prevent double free of the field "gd.toc" by moving it from the
    module's exit function to "remove_gdrom()". This is because, in
    "probe_gdrom()", the function makes sure to deallocate "gd.toc" in case
    of any errors, so the exit function invoked later would again free
    "gd.toc".

    The patch also maintains consistency by deallocating the above mentioned
    fields in "remove_gdrom()" along with another memory allocated field
    "gd.disk".

    Suggested-by: Jens Axboe <axboe@kernel.dk>
    Cc: Peter Rosin <peda@axentia.se>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Atul Gopinathan <atulgopinathan@gmail.com>
    Link: https://lore.kernel.org/r/20210503115736.2104747-28-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/cdrom/gdrom.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/drivers/cdrom/gdrom.c
    +++ b/drivers/cdrom/gdrom.c
    @@ -831,6 +831,8 @@ static int remove_gdrom(struct platform_
    if (gdrom_major)
    unregister_blkdev(gdrom_major, GDROM_DEV_NAME);
    unregister_cdrom(gd.cd_info);
    + kfree(gd.cd_info);
    + kfree(gd.toc);

    return 0;
    }
    @@ -862,7 +864,6 @@ static void __exit exit_gdrom(void)
    {
    platform_device_unregister(pd);
    platform_driver_unregister(&gdrom_driver);
    - kfree(gd.toc);
    }

    module_init(init_gdrom);

    \
     
     \ /
      Last update: 2021-05-24 18:00    [W:4.227 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site