• Johan Hovold's avatar
    NFC: nfcmrvl: do not use device-managed resources · 6cb06562
    Johan Hovold authored
    commit 0cbe4011 upstream.
    
    This specifically fixes resource leaks in the registration error paths.
    
    Device-managed resources is a bad fit for this driver as devices can be
    registered from the n_nci line discipline. Firstly, a tty may not even
    have a corresponding device (should it be part of a Unix98 pty)
    something which would lead to a NULL-pointer dereference when
    registering resources.
    
    Secondly, if the tty has a class device, its lifetime exceeds that of
    the line discipline, which means that resources would leak every time
    the line discipline is closed (or if registration fails).
    
    Currently, the devres interface was only being used to request a reset
    gpio despite the fact that it was already explicitly freed in
    nfcmrvl_nci_unregister_dev() (along with the private data), something
    which also prevented the resource leak at close.
    
    Note that the driver treats gpio number 0 as invalid despite it being
    perfectly valid. This will be addressed in a follow-up patch.
    
    Fixes: b2fe288e ("NFC: nfcmrvl: free reset gpio")
    Fixes: 4a2b947f ("NFC: nfcmrvl: add chip reset management")
    Cc: Vincent Cuissard <cuissard@marvell.com>
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    6cb06562
main.c 6.76 KB