lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 480/772] misc: ocxl: fix possible double free in ocxl_file_register_afu
    Date
    From: Hangyu Hua <hbh25y@gmail.com>

    [ Upstream commit 950cf957fe34d40d63dfa3bf3968210430b6491e ]

    info_release() will be called in device_unregister() when info->dev's
    reference count is 0. So there is no need to call ocxl_afu_put() and
    kfree() again.

    Fix this by adding free_minor() and return to err_unregister error path.

    Fixes: 75ca758adbaf ("ocxl: Create a clear delineation between ocxl backend & frontend")
    Signed-off-by: Hangyu Hua <hbh25y@gmail.com>
    Acked-by: Frederic Barrat <fbarrat@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220418085758.38145-1-hbh25y@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/misc/ocxl/file.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c
    index d881f5e40ad9..6777c419a8da 100644
    --- a/drivers/misc/ocxl/file.c
    +++ b/drivers/misc/ocxl/file.c
    @@ -556,7 +556,9 @@ int ocxl_file_register_afu(struct ocxl_afu *afu)

    err_unregister:
    ocxl_sysfs_unregister_afu(info); // safe to call even if register failed
    + free_minor(info);
    device_unregister(&info->dev);
    + return rc;
    err_put:
    ocxl_afu_put(afu);
    free_minor(info);
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 23:21    [W:4.056 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site