• Yang Yingliang's avatar
    gpu: host1x: Fix memory leak of device names · 55879dad
    Yang Yingliang authored
    The device names allocated by dev_set_name() need be freed
    before module unloading, but they can not be freed because
    the kobject's refcount which was set in device_initialize()
    has not be decreased to 0.
    
    As comment of device_add() says, if it fails, use only
    put_device() drop the refcount, then the name will be
    freed in kobejct_cleanup().
    
    device_del() and put_device() can be replaced with
    device_unregister(), so call it to unregister the added
    successfully devices, and just call put_device() to the
    not added device.
    
    Add a release() function to device to avoid null release()
    function WARNING in device_release(), it's empty, because
    the context devices are freed together in
    host1x_memory_context_list_free().
    
    Fixes: 8aa5bcb6 ("gpu: host1x: Add context device management code")
    Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
    Reviewed-by: default avatarMikko Perttunen <mperttunen@nvidia.com>
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    55879dad
context.c 3.74 KB