• Michał Kępień's avatar
    Input: sparse-keymap - use a managed allocation for keymap copy · fabeb165
    Michał Kępień authored
    Some platform drivers use devm_input_allocate_device() together with
    sparse_keymap_setup() in their .probe callbacks.  While using the former
    simplifies error handling, using the latter necessitates calling
    sparse_keymap_free() in the error path and upon module unloading to
    avoid leaking the copy of the keymap allocated by sparse_keymap_setup().
    
    To help prevent such leaks and enable simpler error handling, make
    sparse_keymap_setup() use devm_kmemdup() to create the keymap copy so
    that it gets automatically freed.
    
    This works for both managed and non-managed input devices as the keymap
    is freed after the last reference to the input device is dropped.
    
    Note that actions previously taken by sparse_keymap_free(), i.e. taking
    the input device's mutex and zeroing its keycode and keycodemax fields,
    are now redundant because the managed keymap will always be freed after
    the input device is unregistered.
    Signed-off-by: default avatarMichał Kępień <kernel@kempniu.pl>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    fabeb165
sparse-keymap.c 8.04 KB