Re: [PATCH] staging: bcm2835-audio: Release resources on module_exit()

2018-03-06 Thread Kirill Marinushkin
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()

2018-03-06 Thread Greg Kroah-Hartman
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