Re: [PATCH] staging: bcm2835-audio: Release resources on module_exit()
On 03/06/18 13:14, Greg Kroah-Hartman wrote: > On Mon, Mar 05, 2018 at 06:52:54AM +0100, Kirill Marinushkin wrote: >> In the current implementation, `rmmod snd_bcm2835` does not release >> resources properly. It causes an oops when trying to list sound devices. >> >> This commit fixes it. >> >> Steps to reproduce: >> >> >> $ rmmod snd_bcm2835 >> $ aplay -L >> [ 138.648130] Unable to handle kernel paging request at virtual address >> 7f1343c0 >> [ 138.660415] pgd = ad8f >> [ 138.665567] [7f1343c0] *pgd=3864c811, *pte=, *ppte= >> [ 138.674887] Internal error: Oops: 7 [#1] SMP ARM >> [ 138.683571] Modules linked in: sha256_generic cfg80211 rfkill snd_pcm >> snd_timer >> snd fixed uio_pdrv_genirq uio ip_tables x_tables ipv6 [last unloaded: >> snd_bcm2835 >> ] >> [ 138.706594] CPU: 3 PID: 463 Comm: aplay Tainted: GWC >> 4.15.0-rc1-v >> 7+ #6 >> [ 138.719833] Hardware name: BCM2835 >> [ 138.726016] task: b877ac00 task.stack: aebec000 >> [ 138.733408] PC is at try_module_get+0x38/0x24c >> [ 138.740813] LR is at snd_ctl_open+0x58/0x194 [snd] >> [ 138.748485] pc : [<801c4d5c>]lr : [<7f0e6b2c>]psr: 2013 >> [ 138.757709] sp : aebedd60 ip : aebedd88 fp : aebedd84 >> [ 138.765884] r10: r9 : 0004 r8 : 7f0ed440 >> [ 138.774040] r7 : b7e469b0 r6 : 7f0e6b2c r5 : afd91900 r4 : 7f1343c0 >> [ 138.783571] r3 : aebec000 r2 : 0001 r1 : b877ac00 r0 : 7f1343c0 >> [ 138.793084] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment >> user >> [ 138.803300] Control: 10c5387d Table: 2d8f006a DAC: 0055 >> [ 138.812064] Process aplay (pid: 463, stack limit = 0xaebec210) >> [ 138.820868] Stack: (0xaebedd60 to 0xaebee000) >> [ 138.828207] dd60: b848d000 afd91900 b7e469b0 7f0ed440 >> aebedda4 aebedd88 >> [ 138.842371] dd80: 7f0e6b2c 801c4d30 afd91900 7f0ea4dc b7e469b0 >> aebeddcc aebedda8 >> [ 138.856611] dda0: 7f0e250c 7f0e6ae0 7f0e2464 b8478ec0 b7e469b0 afd91900 >> 7f0ea388 >> [ 138.870864] ddc0: aebeddf4 aebeddd0 802ce590 7f0e2470 8090ab64 afd91900 >> afd91900 b7e469b0 >> [ 138.885301] dde0: afd91908 802ce4e4 aebede1c aebeddf8 802c57b4 802ce4f0 >> afd91900 aebedea8 >> [ 138.900110] de00: b7fa4c00 0004 aebede3c aebede20 >> 802c6ba8 802c56b4 >> [ 138.915260] de20: aebedea8 aebedf5c aebedea4 aebede40 >> 802d9a68 802c6b58 >> [ 138.930661] de40: b874ddd0 0001 0041 >> afd91900 aebede70 >> [ 138.946402] de60: 0002 b7e469b0 b8a87610 b8d6ab80 >> 801852f8 0008 >> [ 138.962314] de80: aebedf5c aebedea8 0001 80108464 aebec000 >> aebedf4c aebedea8 >> [ 138.978414] dea0: 802dacd4 802d970c b8a87610 b8d6ab80 a7982bc6 0009 >> af363019 b9231480 >> [ 138.994617] dec0: b8c038a0 b7e469b0 0101 0002 0238 >> >> [ 139.010823] dee0: aebedee8 0008 000f aebedf3c aebedf00 >> 802ed7e4 80843f94 >> [ 139.027025] df00: 0003 0008 b9231490 b9231480 0008 >> af363000 >> [ 139.043229] df20: 0005 0002 ff9c 0008 ff9c >> af363000 0003 >> [ 139.059430] df40: aebedf94 aebedf50 802c6f70 802dac70 aebec000 >> 0001 >> [ 139.075629] df60: 0002 0004 0100 0001 7ebe577c 0002e038 >> 0005 >> [ 139.091828] df80: 80108464 aebec000 aebedfa4 aebedf98 802c7060 802c6e6c >> aebedfa8 >> [ 139.108025] dfa0: 801082c0 802c7040 7ebe577c 0002e038 7ebe577c 0008 >> 0b98 e81c8400 >> [ 139.124222] dfc0: 7ebe577c 0002e038 0005 7ebe57e4 00a20af8 >> 7ebe57f0 76f87394 >> [ 139.140419] dfe0: 7ebe55c4 76ec88e8 76df1d9c 6010 7ebe577c >> >> [ 139.156715] [<801c4d5c>] (try_module_get) from [<7f0e6b2c>] >> (snd_ctl_open+0x58/0x194 [snd]) >> [ 139.173222] [<7f0e6b2c>] (snd_ctl_open [snd]) from [<7f0e250c>] >> (snd_open+0xa8/0x14c [snd]) >> [ 139.189683] [<7f0e250c>] (snd_open [snd]) from [<802ce590>] >> (chrdev_open+0xac/0x188) >> [ 139.205465] [<802ce590>] (chrdev_open) from [<802c57b4>] >> (do_dentry_open+0x10c/0x314) >> [ 139.221347] [<802c57b4>] (do_dentry_open) from [<802c6ba8>] >> (vfs_open+0x5c/0x88) >> [ 139.236788] [<802c6ba8>] (vfs_open) from [<802d9a68>] >> (path_openat+0x368/0x944) >> [ 139.248270] [<802d9a68>] (path_openat) from [<802dacd4>] >> (do_filp_open+0x70/0xc4) >> [ 139.263731] [<802dacd4>] (do_filp_open) from [<802c6f70>] >> (do_sys_open+0x110/0x1d4) >> [ 139.279378] [<802c6f70>] (do_sys_open) from [<802c7060>] >> (SyS_open+0x2c/0x30) >> [ 139.290647] [<802c7060>] (SyS_open) from [<801082c0>] >> (ret_fast_syscall+0x0/0x28) >> [ 139.306021] Code: e3c3303f e5932004 e2822001 e5832004 (e5943000) >> [ 139.316265] ---[ end trace 7f3f7f6193b663ed ]--- >> [ 139.324956] note: aplay[463] exited with preempt_count 1 >> >> >> Signed-off-by:
Re: [PATCH] staging: bcm2835-audio: Release resources on module_exit()
On Mon, Mar 05, 2018 at 06:52:54AM +0100, Kirill Marinushkin wrote: > In the current implementation, `rmmod snd_bcm2835` does not release > resources properly. It causes an oops when trying to list sound devices. > > This commit fixes it. > > Steps to reproduce: > > > $ rmmod snd_bcm2835 > $ aplay -L > [ 138.648130] Unable to handle kernel paging request at virtual address > 7f1343c0 > [ 138.660415] pgd = ad8f > [ 138.665567] [7f1343c0] *pgd=3864c811, *pte=, *ppte= > [ 138.674887] Internal error: Oops: 7 [#1] SMP ARM > [ 138.683571] Modules linked in: sha256_generic cfg80211 rfkill snd_pcm > snd_timer > snd fixed uio_pdrv_genirq uio ip_tables x_tables ipv6 [last unloaded: > snd_bcm2835 > ] > [ 138.706594] CPU: 3 PID: 463 Comm: aplay Tainted: GWC > 4.15.0-rc1-v > 7+ #6 > [ 138.719833] Hardware name: BCM2835 > [ 138.726016] task: b877ac00 task.stack: aebec000 > [ 138.733408] PC is at try_module_get+0x38/0x24c > [ 138.740813] LR is at snd_ctl_open+0x58/0x194 [snd] > [ 138.748485] pc : [<801c4d5c>]lr : [<7f0e6b2c>]psr: 2013 > [ 138.757709] sp : aebedd60 ip : aebedd88 fp : aebedd84 > [ 138.765884] r10: r9 : 0004 r8 : 7f0ed440 > [ 138.774040] r7 : b7e469b0 r6 : 7f0e6b2c r5 : afd91900 r4 : 7f1343c0 > [ 138.783571] r3 : aebec000 r2 : 0001 r1 : b877ac00 r0 : 7f1343c0 > [ 138.793084] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment > user > [ 138.803300] Control: 10c5387d Table: 2d8f006a DAC: 0055 > [ 138.812064] Process aplay (pid: 463, stack limit = 0xaebec210) > [ 138.820868] Stack: (0xaebedd60 to 0xaebee000) > [ 138.828207] dd60: b848d000 afd91900 b7e469b0 7f0ed440 > aebedda4 aebedd88 > [ 138.842371] dd80: 7f0e6b2c 801c4d30 afd91900 7f0ea4dc b7e469b0 > aebeddcc aebedda8 > [ 138.856611] dda0: 7f0e250c 7f0e6ae0 7f0e2464 b8478ec0 b7e469b0 afd91900 > 7f0ea388 > [ 138.870864] ddc0: aebeddf4 aebeddd0 802ce590 7f0e2470 8090ab64 afd91900 > afd91900 b7e469b0 > [ 138.885301] dde0: afd91908 802ce4e4 aebede1c aebeddf8 802c57b4 802ce4f0 > afd91900 aebedea8 > [ 138.900110] de00: b7fa4c00 0004 aebede3c aebede20 > 802c6ba8 802c56b4 > [ 138.915260] de20: aebedea8 aebedf5c aebedea4 aebede40 > 802d9a68 802c6b58 > [ 138.930661] de40: b874ddd0 0001 0041 > afd91900 aebede70 > [ 138.946402] de60: 0002 b7e469b0 b8a87610 b8d6ab80 > 801852f8 0008 > [ 138.962314] de80: aebedf5c aebedea8 0001 80108464 aebec000 > aebedf4c aebedea8 > [ 138.978414] dea0: 802dacd4 802d970c b8a87610 b8d6ab80 a7982bc6 0009 > af363019 b9231480 > [ 138.994617] dec0: b8c038a0 b7e469b0 0101 0002 0238 > > [ 139.010823] dee0: aebedee8 0008 000f aebedf3c aebedf00 > 802ed7e4 80843f94 > [ 139.027025] df00: 0003 0008 b9231490 b9231480 0008 > af363000 > [ 139.043229] df20: 0005 0002 ff9c 0008 ff9c > af363000 0003 > [ 139.059430] df40: aebedf94 aebedf50 802c6f70 802dac70 aebec000 > 0001 > [ 139.075629] df60: 0002 0004 0100 0001 7ebe577c 0002e038 > 0005 > [ 139.091828] df80: 80108464 aebec000 aebedfa4 aebedf98 802c7060 802c6e6c > aebedfa8 > [ 139.108025] dfa0: 801082c0 802c7040 7ebe577c 0002e038 7ebe577c 0008 > 0b98 e81c8400 > [ 139.124222] dfc0: 7ebe577c 0002e038 0005 7ebe57e4 00a20af8 > 7ebe57f0 76f87394 > [ 139.140419] dfe0: 7ebe55c4 76ec88e8 76df1d9c 6010 7ebe577c > > [ 139.156715] [<801c4d5c>] (try_module_get) from [<7f0e6b2c>] > (snd_ctl_open+0x58/0x194 [snd]) > [ 139.173222] [<7f0e6b2c>] (snd_ctl_open [snd]) from [<7f0e250c>] > (snd_open+0xa8/0x14c [snd]) > [ 139.189683] [<7f0e250c>] (snd_open [snd]) from [<802ce590>] > (chrdev_open+0xac/0x188) > [ 139.205465] [<802ce590>] (chrdev_open) from [<802c57b4>] > (do_dentry_open+0x10c/0x314) > [ 139.221347] [<802c57b4>] (do_dentry_open) from [<802c6ba8>] > (vfs_open+0x5c/0x88) > [ 139.236788] [<802c6ba8>] (vfs_open) from [<802d9a68>] > (path_openat+0x368/0x944) > [ 139.248270] [<802d9a68>] (path_openat) from [<802dacd4>] > (do_filp_open+0x70/0xc4) > [ 139.263731] [<802dacd4>] (do_filp_open) from [<802c6f70>] > (do_sys_open+0x110/0x1d4) > [ 139.279378] [<802c6f70>] (do_sys_open) from [<802c7060>] > (SyS_open+0x2c/0x30) > [ 139.290647] [<802c7060>] (SyS_open) from [<801082c0>] > (ret_fast_syscall+0x0/0x28) > [ 139.306021] Code: e3c3303f e5932004 e2822001 e5832004 (e5943000) > [ 139.316265] ---[ end trace 7f3f7f6193b663ed ]--- > [ 139.324956] note: aplay[463] exited with preempt_count 1 > > > Signed-off-by: Kirill Marinushkin> Cc: Eric Anholt > Cc: Stefan Wahren > Cc: Greg Kroah-Hartman