• Xiaomeng Tong's avatar
    ASoC: soc-dapm: fix two incorrect uses of list iterator · f730a46b
    Xiaomeng Tong authored
    These two bug are here:
    	list_for_each_entry_safe_continue(w, n, list,
    					power_list);
    	list_for_each_entry_safe_continue(w, n, list,
    					power_list);
    
    After the list_for_each_entry_safe_continue() exits, the list iterator
    will always be a bogus pointer which point to an invalid struct objdect
    containing HEAD member. The funciton poniter 'w->event' will be a
    invalid value which can lead to a control-flow hijack if the 'w' can be
    controlled.
    
    The original intention was to continue the outer list_for_each_entry_safe()
    loop with the same entry if w->event is NULL, but misunderstanding the
    meaning of list_for_each_entry_safe_continue().
    
    So just add a 'continue;' to fix the bug.
    
    Cc: stable@vger.kernel.org
    Fixes: 163cac06
    
     ("ASoC: Factor out DAPM sequence execution")
    Signed-off-by: default avatarXiaomeng Tong <xiam0nd.tong@gmail.com>
    Link: https://lore.kernel.org/r/20220329012134.9375-1-xiam0nd.tong@gmail.com
    
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    f730a46b
soc-dapm.c 123 KB