* [RFC/RFT 0/14] radio-mr800 patch series
@ 2009-09-13 3:22 David Ellingsworth
2009-09-14 19:09 ` Alexey Klimov
0 siblings, 1 reply; 5+ messages in thread
From: David Ellingsworth @ 2009-09-13 3:22 UTC (permalink / raw)
To: linux-media, klimov.linux
What follow is a series of patches to clean up the radio-mr800 driver. I
do _not_ have access to this device so these patches need to be tested.
These patches should apply to Mauro's git tree and against the 2.6.31
release kernel. The patches in this series are as follows:
01. radio-mr800: implement proper locking
02. radio-mr800: simplify video_device allocation
03. radio-mr800: simplify error paths in usb probe callback
04. radio-mr800: remove an unnecessary local variable
05. radio-mr800: simplify access to amradio_device
06. radio-mr800: simplify locking in ioctl callbacks
07. radio-mr800: remove device-removed indicator
08. radio-mr800: fix potential use after free
09. radio-mr800: remove device initialization from open/close
10. radio-mr800: ensure the radio is initialized to a consistent state
11. radio-mr800: fix behavior of set_radio function
12. radio-mr800: preserve radio state during suspend/resume
13. radio-mr800: simplify device warnings
14. radio-mr800: set radio frequency only upon success
The first 7 in this series are the same as those submitted in my last
series and will not be resent. The remaining 7 patches in this series
will be sent separately for review.
Regards,
David Ellingsworth
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/RFT 0/14] radio-mr800 patch series
2009-09-13 3:22 [RFC/RFT 0/14] radio-mr800 patch series David Ellingsworth
@ 2009-09-14 19:09 ` Alexey Klimov
2009-09-22 0:03 ` Alexey Klimov
0 siblings, 1 reply; 5+ messages in thread
From: Alexey Klimov @ 2009-09-14 19:09 UTC (permalink / raw)
To: david; +Cc: linux-media
Hello David,
On Sun, Sep 13, 2009 at 7:22 AM, David Ellingsworth
<david@identd.dyndns.org> wrote:
> What follow is a series of patches to clean up the radio-mr800 driver. I
> do _not_ have access to this device so these patches need to be tested.
> These patches should apply to Mauro's git tree and against the 2.6.31
> release kernel. The patches in this series are as follows:
>
> 01. radio-mr800: implement proper locking
> 02. radio-mr800: simplify video_device allocation
> 03. radio-mr800: simplify error paths in usb probe callback
> 04. radio-mr800: remove an unnecessary local variable
> 05. radio-mr800: simplify access to amradio_device
> 06. radio-mr800: simplify locking in ioctl callbacks
> 07. radio-mr800: remove device-removed indicator
> 08. radio-mr800: fix potential use after free
> 09. radio-mr800: remove device initialization from open/close
> 10. radio-mr800: ensure the radio is initialized to a consistent state
> 11. radio-mr800: fix behavior of set_radio function
> 12. radio-mr800: preserve radio state during suspend/resume
> 13. radio-mr800: simplify device warnings
> 14. radio-mr800: set radio frequency only upon success
>
> The first 7 in this series are the same as those submitted in my last series
> and will not be resent. The remaining 7 patches in this series will be sent
> separately for review.
>
> Regards,
>
> David Ellingsworth
Thank you for work at radio-mr800. I'll check and test your patches as
soon as possible, it probably takes 2-3 days.
--
Best regards, Klimov Alexey
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/RFT 0/14] radio-mr800 patch series
2009-09-14 19:09 ` Alexey Klimov
@ 2009-09-22 0:03 ` Alexey Klimov
[not found] ` <30353c3d0909211806q2cfbe4ecx3b6bd78ce2f13779@mail.gmail.com>
0 siblings, 1 reply; 5+ messages in thread
From: Alexey Klimov @ 2009-09-22 0:03 UTC (permalink / raw)
To: david; +Cc: linux-media
Hello, David
On Mon, Sep 14, 2009 at 11:09 PM, Alexey Klimov <klimov.linux@gmail.com> wrote:
> Hello David,
>
> On Sun, Sep 13, 2009 at 7:22 AM, David Ellingsworth
> <david@identd.dyndns.org> wrote:
>> What follow is a series of patches to clean up the radio-mr800 driver. I
>> do _not_ have access to this device so these patches need to be tested.
>> These patches should apply to Mauro's git tree and against the 2.6.31
>> release kernel. The patches in this series are as follows:
>>
>> 01. radio-mr800: implement proper locking
>> 02. radio-mr800: simplify video_device allocation
>> 03. radio-mr800: simplify error paths in usb probe callback
>> 04. radio-mr800: remove an unnecessary local variable
>> 05. radio-mr800: simplify access to amradio_device
>> 06. radio-mr800: simplify locking in ioctl callbacks
>> 07. radio-mr800: remove device-removed indicator
>> 08. radio-mr800: fix potential use after free
>> 09. radio-mr800: remove device initialization from open/close
>> 10. radio-mr800: ensure the radio is initialized to a consistent state
>> 11. radio-mr800: fix behavior of set_radio function
>> 12. radio-mr800: preserve radio state during suspend/resume
>> 13. radio-mr800: simplify device warnings
>> 14. radio-mr800: set radio frequency only upon success
>>
>> The first 7 in this series are the same as those submitted in my last series
>> and will not be resent. The remaining 7 patches in this series will be sent
>> separately for review.
I applied your patches and tested radio device. Radio works fine, but
unfortunately sudden disconnect while playing radio with gnomeradio
creates troubles. I see such oops in dmesg:
radio_mr800: version 0.11-david AverMedia MR 800 USB FM radio driver
usb 2-2: new low speed USB device using ohci_hcd and address 16
usb 2-2: New USB device found, idVendor=07ca, idProduct=b800
usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-2: Product: AVerMedia USB Radio
usb 2-2: Manufacturer: AVerMedia Technologies
usb 2-2: configuration #1 chosen from 1 choice
radio-mr800 2-2:1.0: Non-NULL drvdata on register
usb 2-2: USB disconnect, address 16
BUG: unable to handle kernel NULL pointer dereference at 000000000000009f
IP: [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
PGD 3c0e1067 PUD 33b1d067 PMD 0
Oops: 0002 [#1] SMP
last sysfs file: /sys/devices/pci0000:00/0000:00:02.0/usb2/2-2/2-2:1.0/uevent
CPU 1
Modules linked in: radio_mr800 v4l2_common videodev v4l1_compat
v4l2_compat_ioctl32 nls_iso8859_1 nls_cp437 vfat fat usb_storage
nls_utf8 cifs ext2 ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4
nf_conntrack nf_defrag_ipv4 ip_tables x_tables ppp_async crc_ccitt
ppp_generic slhc cpufreq_powersave powernow_k8 freq_table
snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device
snd_pcm_oss snd_mixer_oss reiserfs usbhid hid snd_hda_codec_analog
snd_hda_intel ohci_hcd ehci_hcd snd_hda_codec snd_hwdep snd_pcm
snd_timer nvidia(P) snd usbcore soundcore snd_page_alloc rtc_cmos sg
rtc_core rtc_lib i2c_nforce2 forcedeth e100 nls_base k8temp mii
i2c_core hwmon thermal button [last unloaded: v4l2_compat_ioctl32]
Pid: 11790, comm: gnomeradio Tainted: P 2.6.31 #12 System Product Name
RIP: 0010:[<ffffffff8119222b>] [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
RSP: 0018:ffff880031741e28 EFLAGS: 00010206
RAX: 0000000000000017 RBX: ffff88003c3a4030 RCX: ffffffff8109458a
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88003c3a4030
RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
R10: ffff880029391e70 R11: 0000000000000246 R12: ffffffff81349ec0
R13: ffff880029391e70 R14: ffff8800173d7000 R15: ffff88003fac8300
FS: 00007fa0f88e3750(0000) GS:ffff880002900000(0000) knlGS:00000000f7327a10
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000000000009f CR3: 000000003165c000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process gnomeradio (pid: 11790, threadinfo ffff880031740000, task
ffff88003bcc5820)
Stack:
ffff8800173d7000 ffff88003c3a5a60 ffff88003c3a5a60 ffffffffa0c603cb
<0> ffff88003c3a5800 ffffffffa0c603e5 ffff88003c3a5800 ffff88003e400890
<0> ffffffff81349ec0 ffffffffa000d5c7 ffff8800331593c0 ffffffff8118fb37
Call Trace:
[<ffffffffa0c603cb>] ? v4l2_device_disconnect+0x13/0x1c [videodev]
[<ffffffffa0c603e5>] ? v4l2_device_unregister+0x11/0x4b [videodev]
[<ffffffffa000d5c7>] ? usb_amradio_video_device_release+0x11/0x26 [radio_mr800]
[<ffffffff8118fb37>] ? device_release+0x41/0x6a
[<ffffffff81118bf3>] ? kobject_release+0x48/0x5e
[<ffffffff81118bab>] ? kobject_release+0x0/0x5e
[<ffffffff811198ad>] ? kref_put+0x41/0x4a
[<ffffffffa0c5c2f3>] ? v4l2_release+0x33/0x37 [videodev]
[<ffffffff81092dfd>] ? __fput+0x100/0x1c9
[<ffffffff81090538>] ? filp_close+0x5f/0x6a
[<ffffffff810905d4>] ? sys_close+0x91/0xc4
[<ffffffff8100ad6b>] ? system_call_fastpath+0x16/0x1b
Code: 00 00 c3 31 c0 c3 55 48 89 f5 53 48 89 fb 48 83 ec 08 48 85 ff
74 1b 48 83 7f 08 00 75 09 e8 45 de ff ff 85 c0 75 0b 48 8b 43 08 <48>
89 a8 88 00 00 00 58 5b 5d c3 53 48 8b 87 80 00 00 00 48 89
RIP [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
RSP <ffff880031741e28>
CR2: 000000000000009f
---[ end trace 897762e94cb738ad ]---
and lsmod shows that radio-mr800 module is in use. The problem doesn't
exist with current driver.
I'm trying to find patch that provides such behaviour and for this
moment i can say that first six patches(among 14) don't broke the
driver.
--
Best regards, Klimov Alexey
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/RFT 0/14] radio-mr800 patch series
[not found] ` <30353c3d0909211806q2cfbe4ecx3b6bd78ce2f13779@mail.gmail.com>
@ 2009-09-22 23:43 ` Alexey Klimov
2009-09-23 1:00 ` Douglas Schilling Landgraf
0 siblings, 1 reply; 5+ messages in thread
From: Alexey Klimov @ 2009-09-22 23:43 UTC (permalink / raw)
To: David Ellingsworth; +Cc: linux-media, Douglas Schilling Landgraf
On Tue, Sep 22, 2009 at 5:06 AM, David Ellingsworth
<david@identd.dyndns.org> wrote:
> On Mon, Sep 21, 2009 at 8:03 PM, Alexey Klimov <klimov.linux@gmail.com> wrote:
>> Hello, David
>>
>> On Mon, Sep 14, 2009 at 11:09 PM, Alexey Klimov <klimov.linux@gmail.com> wrote:
>>> Hello David,
>>>
>>> On Sun, Sep 13, 2009 at 7:22 AM, David Ellingsworth
>>> <david@identd.dyndns.org> wrote:
>>>> What follow is a series of patches to clean up the radio-mr800 driver. I
>>>> do _not_ have access to this device so these patches need to be tested.
>>>> These patches should apply to Mauro's git tree and against the 2.6.31
>>>> release kernel. The patches in this series are as follows:
>>>>
>>>> 01. radio-mr800: implement proper locking
>>>> 02. radio-mr800: simplify video_device allocation
>>>> 03. radio-mr800: simplify error paths in usb probe callback
>>>> 04. radio-mr800: remove an unnecessary local variable
>>>> 05. radio-mr800: simplify access to amradio_device
>>>> 06. radio-mr800: simplify locking in ioctl callbacks
>>>> 07. radio-mr800: remove device-removed indicator
>>>> 08. radio-mr800: fix potential use after free
>>>> 09. radio-mr800: remove device initialization from open/close
>>>> 10. radio-mr800: ensure the radio is initialized to a consistent state
>>>> 11. radio-mr800: fix behavior of set_radio function
>>>> 12. radio-mr800: preserve radio state during suspend/resume
>>>> 13. radio-mr800: simplify device warnings
>>>> 14. radio-mr800: set radio frequency only upon success
>>>>
>>>> The first 7 in this series are the same as those submitted in my last series
>>>> and will not be resent. The remaining 7 patches in this series will be sent
>>>> separately for review.
>>
>> I applied your patches and tested radio device. Radio works fine, but
>> unfortunately sudden disconnect while playing radio with gnomeradio
>> creates troubles. I see such oops in dmesg:
>>
>> radio_mr800: version 0.11-david AverMedia MR 800 USB FM radio driver
>> usb 2-2: new low speed USB device using ohci_hcd and address 16
>> usb 2-2: New USB device found, idVendor=07ca, idProduct=b800
>> usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
>> usb 2-2: Product: AVerMedia USB Radio
>> usb 2-2: Manufacturer: AVerMedia Technologies
>> usb 2-2: configuration #1 chosen from 1 choice
>> radio-mr800 2-2:1.0: Non-NULL drvdata on register
>> usb 2-2: USB disconnect, address 16
>> BUG: unable to handle kernel NULL pointer dereference at 000000000000009f
>> IP: [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
>> PGD 3c0e1067 PUD 33b1d067 PMD 0
>> Oops: 0002 [#1] SMP
>> last sysfs file: /sys/devices/pci0000:00/0000:00:02.0/usb2/2-2/2-2:1.0/uevent
>> CPU 1
>> Modules linked in: radio_mr800 v4l2_common videodev v4l1_compat
>> v4l2_compat_ioctl32 nls_iso8859_1 nls_cp437 vfat fat usb_storage
>> nls_utf8 cifs ext2 ipt_MASQUERADE iptable_nat nf_nat nf_conntrack_ipv4
>> nf_conntrack nf_defrag_ipv4 ip_tables x_tables ppp_async crc_ccitt
>> ppp_generic slhc cpufreq_powersave powernow_k8 freq_table
>> snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device
>> snd_pcm_oss snd_mixer_oss reiserfs usbhid hid snd_hda_codec_analog
>> snd_hda_intel ohci_hcd ehci_hcd snd_hda_codec snd_hwdep snd_pcm
>> snd_timer nvidia(P) snd usbcore soundcore snd_page_alloc rtc_cmos sg
>> rtc_core rtc_lib i2c_nforce2 forcedeth e100 nls_base k8temp mii
>> i2c_core hwmon thermal button [last unloaded: v4l2_compat_ioctl32]
>> Pid: 11790, comm: gnomeradio Tainted: P 2.6.31 #12 System Product Name
>> RIP: 0010:[<ffffffff8119222b>] [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
>> RSP: 0018:ffff880031741e28 EFLAGS: 00010206
>> RAX: 0000000000000017 RBX: ffff88003c3a4030 RCX: ffffffff8109458a
>> RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88003c3a4030
>> RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
>> R10: ffff880029391e70 R11: 0000000000000246 R12: ffffffff81349ec0
>> R13: ffff880029391e70 R14: ffff8800173d7000 R15: ffff88003fac8300
>> FS: 00007fa0f88e3750(0000) GS:ffff880002900000(0000) knlGS:00000000f7327a10
>> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> CR2: 000000000000009f CR3: 000000003165c000 CR4: 00000000000006e0
>> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
>> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
>> Process gnomeradio (pid: 11790, threadinfo ffff880031740000, task
>> ffff88003bcc5820)
>> Stack:
>> ffff8800173d7000 ffff88003c3a5a60 ffff88003c3a5a60 ffffffffa0c603cb
>> <0> ffff88003c3a5800 ffffffffa0c603e5 ffff88003c3a5800 ffff88003e400890
>> <0> ffffffff81349ec0 ffffffffa000d5c7 ffff8800331593c0 ffffffff8118fb37
>> Call Trace:
>> [<ffffffffa0c603cb>] ? v4l2_device_disconnect+0x13/0x1c [videodev]
>> [<ffffffffa0c603e5>] ? v4l2_device_unregister+0x11/0x4b [videodev]
>> [<ffffffffa000d5c7>] ? usb_amradio_video_device_release+0x11/0x26 [radio_mr800]
>> [<ffffffff8118fb37>] ? device_release+0x41/0x6a
>> [<ffffffff81118bf3>] ? kobject_release+0x48/0x5e
>> [<ffffffff81118bab>] ? kobject_release+0x0/0x5e
>> [<ffffffff811198ad>] ? kref_put+0x41/0x4a
>> [<ffffffffa0c5c2f3>] ? v4l2_release+0x33/0x37 [videodev]
>> [<ffffffff81092dfd>] ? __fput+0x100/0x1c9
>> [<ffffffff81090538>] ? filp_close+0x5f/0x6a
>> [<ffffffff810905d4>] ? sys_close+0x91/0xc4
>> [<ffffffff8100ad6b>] ? system_call_fastpath+0x16/0x1b
>> Code: 00 00 c3 31 c0 c3 55 48 89 f5 53 48 89 fb 48 83 ec 08 48 85 ff
>> 74 1b 48 83 7f 08 00 75 09 e8 45 de ff ff 85 c0 75 0b 48 8b 43 08 <48>
>> 89 a8 88 00 00 00 58 5b 5d c3 53 48 8b 87 80 00 00 00 48 89
>> RIP [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
>> RSP <ffff880031741e28>
>> CR2: 000000000000009f
>> ---[ end trace 897762e94cb738ad ]---
>>
>> and lsmod shows that radio-mr800 module is in use. The problem doesn't
>> exist with current driver.
>> I'm trying to find patch that provides such behaviour and for this
>> moment i can say that first six patches(among 14) don't broke the
>> driver.
>>
>>
>> --
>> Best regards, Klimov Alexey
>>
>
> I think I see the problem.. I think it's with #8 of the series..
> instead of removing that line, place it before the call to
> video_unregister_device. It must not be placed after since
> video_unregister_device may cause the entire structure to be freed. My
> reasoning behind removing it was due to the fact that
> video_unregister_device can cause usb_amradio_video_device_release to
> be called which in turn calls v4l2_device_disconnect.
>
> Regards,
>
> David Ellingsworth
Hello David,
looks like [RFC/RFT 08/14] Version 2 makes things right :)
Driver is living okay on sudden disconnect now.
Thank you for your work.
I have good feelings about this patchset, so if there is no objections..
Mauro, Douglas, you can use my ack for this patchset:
Acked-by: Alexey Klimov <klimov.linux@gmail.com>
--
Best regards, Klimov Alexey
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/RFT 0/14] radio-mr800 patch series
2009-09-22 23:43 ` Alexey Klimov
@ 2009-09-23 1:00 ` Douglas Schilling Landgraf
0 siblings, 0 replies; 5+ messages in thread
From: Douglas Schilling Landgraf @ 2009-09-23 1:00 UTC (permalink / raw)
To: Alexey Klimov; +Cc: David Ellingsworth, linux-media
Hello Alexey,
On Wed, 23 Sep 2009 03:43:55 +0400
Alexey Klimov <klimov.linux@gmail.com> wrote:
> On Tue, Sep 22, 2009 at 5:06 AM, David Ellingsworth
> <david@identd.dyndns.org> wrote:
> > On Mon, Sep 21, 2009 at 8:03 PM, Alexey Klimov
> > <klimov.linux@gmail.com> wrote:
> >> Hello, David
> >>
> >> On Mon, Sep 14, 2009 at 11:09 PM, Alexey Klimov
> >> <klimov.linux@gmail.com> wrote:
> >>> Hello David,
> >>>
> >>> On Sun, Sep 13, 2009 at 7:22 AM, David Ellingsworth
> >>> <david@identd.dyndns.org> wrote:
> >>>> What follow is a series of patches to clean up the radio-mr800
> >>>> driver. I do _not_ have access to this device so these patches
> >>>> need to be tested. These patches should apply to Mauro's git
> >>>> tree and against the 2.6.31 release kernel. The patches in this
> >>>> series are as follows:
> >>>>
> >>>> 01. radio-mr800: implement proper locking
> >>>> 02. radio-mr800: simplify video_device allocation
> >>>> 03. radio-mr800: simplify error paths in usb probe callback
> >>>> 04. radio-mr800: remove an unnecessary local variable
> >>>> 05. radio-mr800: simplify access to amradio_device
> >>>> 06. radio-mr800: simplify locking in ioctl callbacks
> >>>> 07. radio-mr800: remove device-removed indicator
> >>>> 08. radio-mr800: fix potential use after free
> >>>> 09. radio-mr800: remove device initialization from open/close
> >>>> 10. radio-mr800: ensure the radio is initialized to a consistent
> >>>> state 11. radio-mr800: fix behavior of set_radio function
> >>>> 12. radio-mr800: preserve radio state during suspend/resume
> >>>> 13. radio-mr800: simplify device warnings
> >>>> 14. radio-mr800: set radio frequency only upon success
> >>>>
> >>>> The first 7 in this series are the same as those submitted in my
> >>>> last series and will not be resent. The remaining 7 patches in
> >>>> this series will be sent separately for review.
> >>
> >> I applied your patches and tested radio device. Radio works fine,
> >> but unfortunately sudden disconnect while playing radio with
> >> gnomeradio creates troubles. I see such oops in dmesg:
> >>
> >> radio_mr800: version 0.11-david AverMedia MR 800 USB FM radio
> >> driver usb 2-2: new low speed USB device using ohci_hcd and
> >> address 16 usb 2-2: New USB device found, idVendor=07ca,
> >> idProduct=b800 usb 2-2: New USB device strings: Mfr=1, Product=2,
> >> SerialNumber=0 usb 2-2: Product: AVerMedia USB Radio
> >> usb 2-2: Manufacturer: AVerMedia Technologies
> >> usb 2-2: configuration #1 chosen from 1 choice
> >> radio-mr800 2-2:1.0: Non-NULL drvdata on register
> >> usb 2-2: USB disconnect, address 16
> >> BUG: unable to handle kernel NULL pointer dereference at
> >> 000000000000009f IP: [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
> >> PGD 3c0e1067 PUD 33b1d067 PMD 0
> >> Oops: 0002 [#1] SMP
> >> last sysfs
> >> file: /sys/devices/pci0000:00/0000:00:02.0/usb2/2-2/2-2:1.0/uevent
> >> CPU 1 Modules linked in: radio_mr800 v4l2_common videodev
> >> v4l1_compat v4l2_compat_ioctl32 nls_iso8859_1 nls_cp437 vfat fat
> >> usb_storage nls_utf8 cifs ext2 ipt_MASQUERADE iptable_nat nf_nat
> >> nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 ip_tables x_tables
> >> ppp_async crc_ccitt ppp_generic slhc cpufreq_powersave powernow_k8
> >> freq_table snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq
> >> snd_seq_device snd_pcm_oss snd_mixer_oss reiserfs usbhid hid
> >> snd_hda_codec_analog snd_hda_intel ohci_hcd ehci_hcd snd_hda_codec
> >> snd_hwdep snd_pcm snd_timer nvidia(P) snd usbcore soundcore
> >> snd_page_alloc rtc_cmos sg rtc_core rtc_lib i2c_nforce2 forcedeth
> >> e100 nls_base k8temp mii i2c_core hwmon thermal button [last
> >> unloaded: v4l2_compat_ioctl32] Pid: 11790, comm: gnomeradio
> >> Tainted: P 2.6.31 #12 System Product Name RIP:
> >> 0010:[<ffffffff8119222b>] [<ffffffff8119222b>]
> >> dev_set_drvdata+0x25/0x30 RSP: 0018:ffff880031741e28 EFLAGS:
> >> 00010206 RAX: 0000000000000017 RBX: ffff88003c3a4030 RCX:
> >> ffffffff8109458a RDX: 0000000000000000 RSI: 0000000000000000 RDI:
> >> ffff88003c3a4030 RBP: 0000000000000000 R08: 0000000000000000 R09:
> >> 0000000000000000 R10: ffff880029391e70 R11: 0000000000000246 R12:
> >> ffffffff81349ec0 R13: ffff880029391e70 R14: ffff8800173d7000 R15:
> >> ffff88003fac8300 FS: 00007fa0f88e3750(0000)
> >> GS:ffff880002900000(0000) knlGS:00000000f7327a10 CS: 0010 DS:
> >> 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000000000009f CR3:
> >> 000000003165c000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1:
> >> 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6:
> >> 00000000ffff0ff0 DR7: 0000000000000400 Process gnomeradio (pid:
> >> 11790, threadinfo ffff880031740000, task ffff88003bcc5820) Stack:
> >> ffff8800173d7000 ffff88003c3a5a60 ffff88003c3a5a60
> >> ffffffffa0c603cb <0> ffff88003c3a5800 ffffffffa0c603e5
> >> ffff88003c3a5800 ffff88003e400890 <0> ffffffff81349ec0
> >> ffffffffa000d5c7 ffff8800331593c0 ffffffff8118fb37 Call Trace:
> >> [<ffffffffa0c603cb>] ? v4l2_device_disconnect+0x13/0x1c [videodev]
> >> [<ffffffffa0c603e5>] ? v4l2_device_unregister+0x11/0x4b [videodev]
> >> [<ffffffffa000d5c7>] ? usb_amradio_video_device_release+0x11/0x26
> >> [radio_mr800] [<ffffffff8118fb37>] ? device_release+0x41/0x6a
> >> [<ffffffff81118bf3>] ? kobject_release+0x48/0x5e
> >> [<ffffffff81118bab>] ? kobject_release+0x0/0x5e
> >> [<ffffffff811198ad>] ? kref_put+0x41/0x4a
> >> [<ffffffffa0c5c2f3>] ? v4l2_release+0x33/0x37 [videodev]
> >> [<ffffffff81092dfd>] ? __fput+0x100/0x1c9
> >> [<ffffffff81090538>] ? filp_close+0x5f/0x6a
> >> [<ffffffff810905d4>] ? sys_close+0x91/0xc4
> >> [<ffffffff8100ad6b>] ? system_call_fastpath+0x16/0x1b
> >> Code: 00 00 c3 31 c0 c3 55 48 89 f5 53 48 89 fb 48 83 ec 08 48 85
> >> ff 74 1b 48 83 7f 08 00 75 09 e8 45 de ff ff 85 c0 75 0b 48 8b 43
> >> 08 <48> 89 a8 88 00 00 00 58 5b 5d c3 53 48 8b 87 80 00 00 00 48 89
> >> RIP [<ffffffff8119222b>] dev_set_drvdata+0x25/0x30
> >> RSP <ffff880031741e28>
> >> CR2: 000000000000009f
> >> ---[ end trace 897762e94cb738ad ]---
> >>
> >> and lsmod shows that radio-mr800 module is in use. The problem
> >> doesn't exist with current driver.
> >> I'm trying to find patch that provides such behaviour and for this
> >> moment i can say that first six patches(among 14) don't broke the
> >> driver.
> >>
> >>
> >> --
> >> Best regards, Klimov Alexey
> >>
> >
> > I think I see the problem.. I think it's with #8 of the series..
> > instead of removing that line, place it before the call to
> > video_unregister_device. It must not be placed after since
> > video_unregister_device may cause the entire structure to be freed.
> > My reasoning behind removing it was due to the fact that
> > video_unregister_device can cause usb_amradio_video_device_release
> > to be called which in turn calls v4l2_device_disconnect.
> >
> > Regards,
> >
> > David Ellingsworth
>
> Hello David,
>
> looks like [RFC/RFT 08/14] Version 2 makes things right :)
> Driver is living okay on sudden disconnect now.
> Thank you for your work.
>
> I have good feelings about this patchset, so if there is no
> objections..
>
> Mauro, Douglas, you can use my ack for this patchset:
>
> Acked-by: Alexey Klimov <klimov.linux@gmail.com>
Ok.
Cheers,
Douglas
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2009-09-23 4:05 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-13 3:22 [RFC/RFT 0/14] radio-mr800 patch series David Ellingsworth
2009-09-14 19:09 ` Alexey Klimov
2009-09-22 0:03 ` Alexey Klimov
[not found] ` <30353c3d0909211806q2cfbe4ecx3b6bd78ce2f13779@mail.gmail.com>
2009-09-22 23:43 ` Alexey Klimov
2009-09-23 1:00 ` Douglas Schilling Landgraf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox