• Alexander Sverdlin's avatar
    ASoC: ep93xx: ignore 0 Hz sysclk · 66dc3b9b
    Alexander Sverdlin authored
    Commit 2458adb8
    ("SoC: simple-card-utils: set 0Hz to sysclk when shutdown")
    added a call to snd_soc_dai_set_sysclk() with 0 Hz frequency. Being
    propagated further it causes a division by zero in clk-ep93xx driver:
    
    Division by zero in kernel.
    CPU: 0 PID: 52 Comm: aplay Tainted: G        W          6.2.0-rc4-... #1
    Hardware name: Generic DT based system
     unwind_backtrace from show_stack+0x10/0x18
     show_stack from dump_stack_lvl+0x28/0x34
     dump_stack_lvl from __div0+0x10/0x1c
     __div0 from Ldiv0+0x8/0x1c
     Ldiv0 from ep93xx_mux_determine_rate+0x78/0x1d0
     ep93xx_mux_determine_rate from clk_core_round_rate_nolock+0x48/0xc8
     clk_core_round_rate_nolock from clk_core_set_rate_nolock+0x48/0x160
     clk_core_set_rate_nolock from clk_set_rate+0x30/0x8c
     clk_set_rate from ep93xx_i2s_set_sysclk+0x30/0x6c
     ep93xx_i2s_set_sysclk from snd_soc_dai_set_sysclk+0x3c/0xa4
     snd_soc_dai_set_sysclk from asoc_simple_shutdown+0xb8/0x164
     asoc_simple_shutdown from snd_soc_link_shutdown+0x44/0x54
     snd_soc_link_shutdown from soc_pcm_clean+0x78/0x180
     soc_pcm_clean from soc_pcm_close+0x28/0x40
     soc_pcm_close from snd_pcm_release_substream.part.0+0x3c/0x84
     snd_pcm_release_substream.part.0 from snd_pcm_release+0x40/0x88
     snd_pcm_release from __fput+0x74/0x278
    
    There has been commit f1879d7b ("ASoC: rockchip: ignore 0Hz sysclk"),
    but it prepared by far not all drivers.
    Signed-off-by: default avatarAlexander Sverdlin <alexander.sverdlin@gmail.com>
    Link: https://lore.kernel.org/r/20230212220923.258414-1-alexander.sverdlin@gmail.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    66dc3b9b
ep93xx-i2s.c 13.1 KB