• J
    USB: fix misleading usb_set_intfdata() kernel doc · 11cefeb2
    Johan Hovold 提交于
    The struct device driver-data pointer is used for any data that a driver
    may need in various callbacks while bound to the device. For
    convenience, subsystems typically provide wrappers such as
    usb_set_intfdata() of the generic accessor functions for use in bus
    callbacks.
    
    There is generally no longer any need for a driver to clear the pointer,
    but since commit 0998d063 ("device-core: Ensure drvdata = NULL when
    no driver is bound") the driver-data pointer is set to NULL by driver
    core post unbind anyway.
    
    For historical reasons, USB core also clears this pointer when an
    explicitly claimed interface is released.
    
    Due to a misunderstanding, a misleading kernel doc comment for
    usb_set_intfdata() was recently added which claimed that the driver data
    pointer must not be cleared during disconnect before "all actions [are]
    completed", which is both imprecise and incorrect.
    
    Specifically, drivers like cdc-acm which claim additional interfaces use
    the driver-data pointer as a flag which is cleared when the first
    interface is unbound. As long as a driver does not do something odd like
    dereference the pointer in, for example, completion callbacks, this can
    be done at any time during disconnect. And in any case this is no
    different than for any other resource, like the driver data itself,
    which may be freed by the disconnect callback.
    
    Note that the comment actually also claimed that the interface itself
    was somehow being set to NULL by driver core.
    
    Fix the kernel doc by removing incorrect, overly specific and misleading
    details and adding a comment about why some drivers do clear the
    driver-data pointer.
    
    Fixes: 27ef1784 ("usb: add usb_set_intfdata() documentation")
    Signed-off-by: NJohan Hovold <johan@kernel.org>
    Acked-by: NAlan Stern <stern@rowland.harvard.edu>
    Acked-by: NVincent Mailhol <mailhol.vincent@wanadoo.fr>
    Link: https://lore.kernel.org/r/20221212152035.31806-1-johan@kernel.orgSigned-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    11cefeb2
usb.h 78.2 KB