• Tedd Ho-Jeong An's avatar
    Bluetooth: Reinitialize the list after deletion for session user list · ab944c83
    Tedd Ho-Jeong An authored
    If the user->list is deleted with list_del(), it doesn't initialize the
    entry which can cause the issue with list_empty(). According to the
    comment from the list.h, list_empty() returns false even if the list is
    empty and put the entry in an undefined state.
    
    /**
     * list_del - deletes entry from list.
     * @entry: the element to delete from the list.
     * Note: list_empty() on entry does not return true after this, the entry is
     * in an undefined state.
     */
    
    Because of this behavior, list_empty() returns false even if list is empty
    when the device is reconnected.
    
    So, user->list needs to be re-initialized after list_del(). list.h already
    have a macro list_del_init() which deletes the entry and initailze it again.
    Signed-off-by: default avatarTedd Ho-Jeong An <tedd.an@intel.com>
    Tested-by: default avatarJörg Otte <jrg.otte@gmail.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    ab944c83
l2cap_core.c 178 KB