• Andrzej Pietrasiewicz's avatar
    usb: gadget: nokia: fix error recovery path for optional functions · 45ab4609
    Andrzej Pietrasiewicz authored
    In the nokia gadget some USB functions (obex 1 and 2, phonet) are optional.
    
    If at the start of nokia_bind_config e.g. fi_phonet is an error pointer,
    which can happen because we don't fail the bind process if
    usb_get_function_instance() fails for fi_phonet, then f_phonet is NULL, and
    
    phonet_stat = usb_add_function(c, f_phonet);
    
    is never called and phonet_stat remains 0.
    
    If, in these circumstances, we hit the err_conf label then !phonet_stat
    evaluates to true and we try usb_remove_function() with its second
    parameter being f_phonet which is NULL and it causes NULL pointer
    dereference.
    
    This patch changes the initial values of (obex1|obex2|phonet)_stat to a
    nonzero value so that if the err_conf label is hit while the respective
    functions have not been acquired the usb_remove_function() is not called
    for those functions.
    Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    45ab4609
nokia.c 9.27 KB