• Gergo Koteles's avatar
    ALSA: hda/tas2781: call cleanup functions only once · 6c6fa264
    Gergo Koteles authored
    If the module can load the RCA but not the firmware binary, it will call
    the cleanup functions. Then unloading the module causes general
    protection fault due to double free.
    
    Do not call the cleanup functions in tasdev_fw_ready.
    
    general protection fault, probably for non-canonical address
    0x6f2b8a2bff4c8fec: 0000 [#1] PREEMPT SMP NOPTI
    Call Trace:
     <TASK>
     ? die_addr+0x36/0x90
     ? exc_general_protection+0x1c5/0x430
     ? asm_exc_general_protection+0x26/0x30
     ? tasdevice_config_info_remove+0x6d/0xd0 [snd_soc_tas2781_fmwlib]
     tas2781_hda_unbind+0xaa/0x100 [snd_hda_scodec_tas2781_i2c]
     component_unbind+0x2e/0x50
     component_unbind_all+0x92/0xa0
     component_del+0xa8/0x140
     tas2781_hda_remove.isra.0+0x32/0x60 [snd_hda_scodec_tas2781_i2c]
     i2c_device_remove+0x26/0xb0
    
    Fixes: 5be27f1e ("ALSA: hda/tas2781: Add tas2781 HDA driver")
    CC: stable@vger.kernel.org
    Signed-off-by: default avatarGergo Koteles <soyer@irl.hu>
    Link: https://lore.kernel.org/r/1a0885c424bb21172702d254655882b59ef6477a.1702510018.git.soyer@irl.huSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    6c6fa264
tas2781_hda_i2c.c 21.8 KB