* USB related "unable to handle kernel paging request" in 3.0.0-rc7
@ 2011-07-22 19:27 Tino Keitel
2011-07-25 19:47 ` Maciej Rutecki
` (2 more replies)
0 siblings, 3 replies; 18+ messages in thread
From: Tino Keitel @ 2011-07-22 19:27 UTC (permalink / raw)
To: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 2954 bytes --]
Hi,
I get the following Oops when booting 3.0.0-rc7 (actually
1f922d07704c501388a306c78536bca7432b3934):
BUG: unable to handle kernel paging request at 0000000000001e78
IP: [<ffffffffa00b0081>] vp7045_usb_probe+0x51/0x90 [dvb_usb_vp7045]
PGD b920c067 PUD b9327067 PMD 0
Oops: 0002 [#1] SMP
CPU 0
Modules linked in: ath5k(+) ath mac80211 snd_hda_codec_idt
snd_hda_intel snd_hda_codec snd_pcm_oss snd_pcm dvb_usb_vp7045(+)
dvb_usb dvb_core cfg80211 rc_core snd_timer evdev sky2 ata_piix
snd_page_alloc
Pid: 858, comm: modprobe Not tainted 3.0.0-rc7-00177-g5679ce7 #5 Apple
Inc. Macmini2,1/Mac-F4208EAA
RIP: 0010:[<ffffffffa00b0081>] [<ffffffffa00b0081>]
vp7045_usb_probe+0x51/0x90 [dvb_usb_vp7045]
RSP: 0018:ffff8800b8525da8 EFLAGS: 00010296
RAX: ffff8800b853fde0 RBX: ffff8800b9c3ac00 RCX: 0000000000000008
RDX: 0000000000000064 RSI: 00000000000000d0 RDI: ffff8800bdc000c0
RBP: 0000000000000000 R08: 0000000000000000 R09: ffff8800beebcff0
R10: 0000000000000003 R11: 0000000000000000 R12: 0000000000000000
R13: ffffffffa00b0dc0 R14: ffff8800b9c3ac00 R15: 0000000000000000
FS: 00007fed482bd700(0000) GS:ffff8800bec00000(0000)
knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000001e78 CR3: 00000000b9334000 CR4: 00000000000006b0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process modprobe (pid: 858, threadinfo ffff8800b8524000, task
ffff8800bdd1c7a0)
Stack:
ffff8800babb8800 0000000000000000 ffff8800b9c3ac30 ffff8800babb8800
ffffffffa00b0ea8 ffffffff81390c05 0000000000405e80 ffff8800b9c3ac30
00000000ffffffed ffffffffa00b0ea8 0000000000000000 0000000000000000
Call Trace:
[<ffffffff81390c05>] ? usb_probe_interface+0xe5/0x1e0
[<ffffffff8133203f>] ? driver_probe_device+0x6f/0x190
[<ffffffff813321f3>] ? __driver_attach+0x93/0xa0
[<ffffffff81332160>] ? driver_probe_device+0x190/0x190
[<ffffffff813310f3>] ? bus_for_each_dev+0x53/0x80
[<ffffffff813319a8>] ? bus_add_driver+0x178/0x240
[<ffffffff813326ca>] ? driver_register+0x6a/0x130
[<ffffffff8138fb3e>] ? usb_register_driver+0x8e/0x180
[<ffffffffa00b4000>] ? 0xffffffffa00b3fff
[<ffffffffa00b401b>] ? vp7045_usb_module_init+0x1b/0x35
[dvb_usb_vp7045]
[<ffffffff810001cc>] ? do_one_initcall+0x3c/0x170
[<ffffffff8106d3da>] ? sys_init_module+0x8a/0x200
[<ffffffff814b653b>] ? system_call_fastpath+0x16/0x1b
Code: 24 18 48 89 fb 4c 89 64 24 20 e8 4b 85 ff ff 85 c0 89 c5 75 2d 48
8b 3d 96 a8 5a e1 be d0 00 00 00 4c 8b 64 24 08 e8 0f 9b 00 e1
89 84 24 78 1e 00 00 48 8b 44 24 08 48 83 b8 78 1e 00 00 00
RIP [<ffffffffa00b0081>] vp7045_usb_probe+0x51/0x90 [dvb_usb_vp7045]
RSP <ffff8800b8525da8>
CR2: 0000000000001e78
---[ end trace bbbe095431a3447b ]---
Full dmesg is attached. I also had a hang after suspend to RAM, I don't know if this was
related.
This is a Mac mini Core 2 Duo, and before I ran 2.6.39.3 without such
problems.
Regards,
Tino
[-- Attachment #2: dmesg.xz --]
[-- Type: application/octet-stream, Size: 10304 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-07-22 19:27 USB related "unable to handle kernel paging request" in 3.0.0-rc7 Tino Keitel
@ 2011-07-25 19:47 ` Maciej Rutecki
2011-08-02 8:54 ` Dan Carpenter
2011-08-02 12:29 ` [PATCH] [media] vp7045: fix buffer setup Florian Mickler
2 siblings, 0 replies; 18+ messages in thread
From: Maciej Rutecki @ 2011-07-25 19:47 UTC (permalink / raw)
To: Tino Keitel; +Cc: linux-kernel
On piątek, 22 lipca 2011 o 21:27:22 Tino Keitel wrote:
> Hi,
>
> I get the following Oops when booting 3.0.0-rc7 (actually
> 1f922d07704c501388a306c78536bca7432b3934):
>
[...]
I created a Bugzilla entry at
https://bugzilla.kernel.org/show_bug.cgi?id=40062
for your bug report, please add your address to the CC list in there, thanks!
--
Maciej Rutecki
http://www.maciek.unixy.pl
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-07-22 19:27 USB related "unable to handle kernel paging request" in 3.0.0-rc7 Tino Keitel
2011-07-25 19:47 ` Maciej Rutecki
@ 2011-08-02 8:54 ` Dan Carpenter
2011-08-02 9:51 ` Florian Mickler
2011-08-02 12:29 ` [PATCH] [media] vp7045: fix buffer setup Florian Mickler
2 siblings, 1 reply; 18+ messages in thread
From: Dan Carpenter @ 2011-08-02 8:54 UTC (permalink / raw)
To: linux-kernel; +Cc: Tino Keitel, Florian Mickler, mchehab
Looking at this, I noticed a memory corruption bug introduce in:
ab22cbda6651d "[media] vp7045: get rid of on-stack dma buffers"
vp7045_properties.size_of_priv is sizeof(u8 *) so in vp7045_usb_probe()
the d->priv buffer gets allocated twice. Once in:
dvb_usb_device_init()
-> dvb_usb_init()
And once explicitly to a larger buffer later on in the function with
a kmalloc().
So the two places that use the buffer will probably race and cause
memory corruption.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 8:54 ` Dan Carpenter
@ 2011-08-02 9:51 ` Florian Mickler
2011-08-02 10:40 ` Florian Mickler
0 siblings, 1 reply; 18+ messages in thread
From: Florian Mickler @ 2011-08-02 9:51 UTC (permalink / raw)
To: Dan Carpenter; +Cc: linux-kernel, Tino Keitel, mchehab
On Tue, 2 Aug 2011 11:54:47 +0300
Dan Carpenter <error27@gmail.com> wrote:
> Looking at this, I noticed a memory corruption bug introduce in:
> ab22cbda6651d "[media] vp7045: get rid of on-stack dma buffers"
>
> vp7045_properties.size_of_priv is sizeof(u8 *) so in vp7045_usb_probe()
> the d->priv buffer gets allocated twice. Once in:
> dvb_usb_device_init()
> -> dvb_usb_init()
>
> And once explicitly to a larger buffer later on in the function with
> a kmalloc().
>
> So the two places that use the buffer will probably race and cause
> memory corruption.
>
> regards,
> dan carpenter
Damn. That (u8*)sized priv buffer should only hold a pointer to the
transfer buffer allocated in the prope routine. But I botched that.
I will send a fixup in a minute.
Regards,
Flo
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 9:51 ` Florian Mickler
@ 2011-08-02 10:40 ` Florian Mickler
2011-08-02 11:10 ` Florian Mickler
2011-08-02 11:35 ` Dan Carpenter
0 siblings, 2 replies; 18+ messages in thread
From: Florian Mickler @ 2011-08-02 10:40 UTC (permalink / raw)
To: Dan Carpenter; +Cc: Florian Mickler, linux-kernel, Tino Keitel, mchehab
On Tue, 2 Aug 2011 11:51:45 +0200
Florian Mickler <florian@mickler.org> wrote:
> On Tue, 2 Aug 2011 11:54:47 +0300
> Dan Carpenter <error27@gmail.com> wrote:
>
> > Looking at this, I noticed a memory corruption bug introduce in:
> > ab22cbda6651d "[media] vp7045: get rid of on-stack dma buffers"
> >
> > vp7045_properties.size_of_priv is sizeof(u8 *) so in vp7045_usb_probe()
> > the d->priv buffer gets allocated twice. Once in:
> > dvb_usb_device_init()
> > -> dvb_usb_init()
> >
> > And once explicitly to a larger buffer later on in the function with
> > a kmalloc().
> >
> > So the two places that use the buffer will probably race and cause
> > memory corruption.
Btw, what two places use the buffer? I only see vp7045_usb_op. Did you
mean s/use/free/ or did I overlook it?
Patch below.
> >
> > regards,
> > dan carpenter
>
> Damn. That (u8*)sized priv buffer should only hold a pointer to the
> transfer buffer allocated in the prope routine. But I botched that.
> I will send a fixup in a minute.
>
> Regards,
> Flo
This should fix it.
[git am -c ]
--------->8-------->8---------->8------------>8---------------------------
commit 2c505d4867be9f3605c20ed505ec62d2096a05b1
Author: Florian Mickler <florian@mickler.org>
Date: Tue Aug 2 12:18:55 2011 +0200
[media] vp7045: fix double free and mem leak
The vp7045 priv data should be a pointer to a buffer.
Make it so.
This was introduced in commit ab22cbda6651db25 ([media] vp7045: get rid of on-stack
dma buffers).
CC: stable@kernel.org
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Florian Mickler <florian@mickler.org>
diff --git a/drivers/media/dvb/dvb-usb/vp7045.c b/drivers/media/dvb/dvb-usb/vp7045.c
index 3db89e3..8dd348b 100644
--- a/drivers/media/dvb/dvb-usb/vp7045.c
+++ b/drivers/media/dvb/dvb-usb/vp7045.c
@@ -28,7 +28,8 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
int vp7045_usb_op(struct dvb_usb_device *d, u8 cmd, u8 *out, int outlen, u8 *in, int inlen, int msec)
{
int ret = 0;
- u8 *buf = d->priv;
+ u8 **bufp = d->priv;
+ u8 *buf = *bufp
buf[0] = cmd;
@@ -224,14 +225,16 @@ static struct dvb_usb_device_properties vp7045_properties;
static int vp7045_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
+ u8 **bufp;
struct dvb_usb_device *d;
int ret = dvb_usb_device_init(intf, &vp7045_properties,
THIS_MODULE, &d, adapter_nr);
if (ret)
return ret;
- d->priv = kmalloc(20, GFP_KERNEL);
- if (!d->priv) {
+ bufp = d->priv;
+ *bufp = kmalloc(20, GFP_KERNEL);
+ if (!*bufp) {
dvb_usb_device_exit(intf);
return -ENOMEM;
}
@@ -241,8 +244,10 @@ static int vp7045_usb_probe(struct usb_interface *intf,
static void vp7045_usb_disconnect(struct usb_interface *intf)
{
+ u8 **bufp;
struct dvb_usb_device *d = usb_get_intfdata(intf);
- kfree(d->priv);
+ bufp = d->priv;
+ kfree(*bufp);
dvb_usb_device_exit(intf);
}
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 10:40 ` Florian Mickler
@ 2011-08-02 11:10 ` Florian Mickler
2011-08-02 11:51 ` Florian Mickler
2011-08-02 11:35 ` Dan Carpenter
1 sibling, 1 reply; 18+ messages in thread
From: Florian Mickler @ 2011-08-02 11:10 UTC (permalink / raw)
To: Florian Mickler; +Cc: Dan Carpenter, linux-kernel, Tino Keitel, mchehab
On Tue, 2 Aug 2011 12:40:28 +0200
Florian Mickler <florian@mickler.org> wrote:
> This should fix it.
>
Tino, can you test if this also fixes your bug since
I don't have the hardware.
At the moment I'm not seeing how the screwup Dan pointed out could
have that effect though... ? The priv-buffer-pointer would have
been simply overriden in the probe routine by the new buffer and it
should have worked happily everafter (until the driver disconnect
routine would have been called...) *headscratch*
Regards,
Flo
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 10:40 ` Florian Mickler
2011-08-02 11:10 ` Florian Mickler
@ 2011-08-02 11:35 ` Dan Carpenter
2011-08-02 11:40 ` Dan Carpenter
2011-08-02 12:02 ` Florian Mickler
1 sibling, 2 replies; 18+ messages in thread
From: Dan Carpenter @ 2011-08-02 11:35 UTC (permalink / raw)
To: Florian Mickler; +Cc: linux-kernel, Tino Keitel, mchehab
On Tue, Aug 02, 2011 at 12:40:28PM +0200, Florian Mickler wrote:
> This should fix it.
>
That's not right. You should just make .size_of_priv = 20 with a
comment.
Btw vp7045_properties is declared twice so it's confusing. Initially,
I saw the first declaration so I thought .size_of_priv was zero. I
don't understand why sparse doesn't warn about that. Could you fix
that as well?
Also I did notice at first that you were the person who added the
.size_of_priv change so that's why I thought someone else must use
that function.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 11:35 ` Dan Carpenter
@ 2011-08-02 11:40 ` Dan Carpenter
2011-08-02 12:02 ` Florian Mickler
1 sibling, 0 replies; 18+ messages in thread
From: Dan Carpenter @ 2011-08-02 11:40 UTC (permalink / raw)
To: Florian Mickler; +Cc: linux-kernel, Tino Keitel, mchehab
On Tue, Aug 02, 2011 at 02:35:54PM +0300, Dan Carpenter wrote:
> Also I did notice at first that you were the person who added the
> .size_of_priv change so that's why I thought someone else must use
> that function.
Grr... That made no sense.
I thought someone else set .size_of_priv and was using the pointer.
But actually it was you who set the .size_of_priv and no one else
is using it.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 11:10 ` Florian Mickler
@ 2011-08-02 11:51 ` Florian Mickler
2011-08-02 11:56 ` Dan Carpenter
0 siblings, 1 reply; 18+ messages in thread
From: Florian Mickler @ 2011-08-02 11:51 UTC (permalink / raw)
To: Florian Mickler; +Cc: Dan Carpenter, linux-kernel, Tino Keitel, mchehab
On Tue, 2 Aug 2011 13:10:39 +0200
Florian Mickler <florian@mickler.org> wrote:
> On Tue, 2 Aug 2011 12:40:28 +0200
> Florian Mickler <florian@mickler.org> wrote:
>
> > This should fix it.
> >
> Tino, can you test if this also fixes your bug since
> I don't have the hardware.
>
> At the moment I'm not seeing how the screwup Dan pointed out could
> have that effect though... ? The priv-buffer-pointer would have
> been simply overriden in the probe routine by the new buffer and it
> should have worked happily everafter (until the driver disconnect
> routine would have been called...) *headscratch*
>
> Regards,
> Flo
ok. I see the problem now. The buffer get's initialzed a little bit too late
because it already get's used from the dvb_usb_device_init call via the
frontend attach call:
dvb_usb_device_init->dvb_usb_init->dvb_usb_adapter_init->dvb_usb_adapter_frontend_init->vp7045_frontend_attach->vp7045_usb_op
Hm.. let me think about it. In the meantime, you don't need to test
this 'fix'.
Regards,
Flo
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 11:51 ` Florian Mickler
@ 2011-08-02 11:56 ` Dan Carpenter
0 siblings, 0 replies; 18+ messages in thread
From: Dan Carpenter @ 2011-08-02 11:56 UTC (permalink / raw)
To: Florian Mickler; +Cc: linux-kernel, Tino Keitel, mchehab
On Tue, Aug 02, 2011 at 01:51:17PM +0200, Florian Mickler wrote:
> ok. I see the problem now. The buffer get's initialzed a little bit too late
> because it already get's used from the dvb_usb_device_init call via the
> frontend attach call:
>
> dvb_usb_device_init->dvb_usb_init->dvb_usb_adapter_init->dvb_usb_adapter_frontend_init->vp7045_frontend_attach->vp7045_usb_op
>
> Hm.. let me think about it. In the meantime, you don't need to test
> this 'fix'.
Yep. That would do it. But my fix would still work nicely.
Don't forget to remove the kfree(d->priv) from vp7045_usb_disconnect()
because that would be automatic now.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: USB related "unable to handle kernel paging request" in 3.0.0-rc7
2011-08-02 11:35 ` Dan Carpenter
2011-08-02 11:40 ` Dan Carpenter
@ 2011-08-02 12:02 ` Florian Mickler
1 sibling, 0 replies; 18+ messages in thread
From: Florian Mickler @ 2011-08-02 12:02 UTC (permalink / raw)
To: Dan Carpenter; +Cc: linux-kernel, Tino Keitel, mchehab
On Tue, 2 Aug 2011 14:35:54 +0300
Dan Carpenter <error27@gmail.com> wrote:
> On Tue, Aug 02, 2011 at 12:40:28PM +0200, Florian Mickler wrote:
> > This should fix it.
> >
>
> That's not right. You should just make .size_of_priv = 20 with a
> comment.
Right. Don't know why I didn't do so right from the start. The thing
is, the buffer has to be seperately allocated from the heap in order
for it to be used as a dma target.
I probably overlooked that that is what actually happens in
dvb_usb_device_init. Or realized and changed everything accordingly but
forgot the .size_of_priv. ?
Anyway, that is what you get if you can't actually test what you do.
(Sorry Tino! The original patch submission had a big fat warning
that it was only compile tested, but that got lost somewhere along
the line...)
>
> regards,
> dan carpenter
>
Thx,
Flo
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH] [media] vp7045: fix buffer setup
2011-07-22 19:27 USB related "unable to handle kernel paging request" in 3.0.0-rc7 Tino Keitel
2011-07-25 19:47 ` Maciej Rutecki
2011-08-02 8:54 ` Dan Carpenter
@ 2011-08-02 12:29 ` Florian Mickler
2011-08-03 19:02 ` Tino Keitel
2 siblings, 1 reply; 18+ messages in thread
From: Florian Mickler @ 2011-08-02 12:29 UTC (permalink / raw)
To: tino.keitel; +Cc: mchehab, linux-kernel, error27, Florian Mickler
dvb_usb_device_init calls the frontend_attach method of this driver which
uses vp7045_usb_ob. In order to have a buffer ready in vp7045_usb_op, it has to
be allocated before that happens.
Luckily we can use the whole private data as the buffer as it gets separately
allocated on the heap via kzalloc in dvb_usb_device_init and is thus apt for
use via usb_control_msg.
This fixes a
BUG: unable to handle kernel paging request at 0000000000001e78
reported by Tino Keitel and diagnosed by Dan Carpenter.
Reported-by: Tino Keitel <tino.keitel@tikei.de>
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Florian Mickler <florian@mickler.org>
---
Tino, can you test this?
I'm quite certain that I now nailed the bug with this.
Regards,
Flo
drivers/media/dvb/dvb-usb/vp7045.c | 26 ++++----------------------
1 files changed, 4 insertions(+), 22 deletions(-)
diff --git a/drivers/media/dvb/dvb-usb/vp7045.c b/drivers/media/dvb/dvb-usb/vp7045.c
index 3db89e3..536c16c 100644
--- a/drivers/media/dvb/dvb-usb/vp7045.c
+++ b/drivers/media/dvb/dvb-usb/vp7045.c
@@ -224,26 +224,8 @@ static struct dvb_usb_device_properties vp7045_properties;
static int vp7045_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
- struct dvb_usb_device *d;
- int ret = dvb_usb_device_init(intf, &vp7045_properties,
- THIS_MODULE, &d, adapter_nr);
- if (ret)
- return ret;
-
- d->priv = kmalloc(20, GFP_KERNEL);
- if (!d->priv) {
- dvb_usb_device_exit(intf);
- return -ENOMEM;
- }
-
- return ret;
-}
-
-static void vp7045_usb_disconnect(struct usb_interface *intf)
-{
- struct dvb_usb_device *d = usb_get_intfdata(intf);
- kfree(d->priv);
- dvb_usb_device_exit(intf);
+ return dvb_usb_device_init(intf, &vp7045_properties,
+ THIS_MODULE, NULL, adapter_nr);
}
static struct usb_device_id vp7045_usb_table [] = {
@@ -258,7 +240,7 @@ MODULE_DEVICE_TABLE(usb, vp7045_usb_table);
static struct dvb_usb_device_properties vp7045_properties = {
.usb_ctrl = CYPRESS_FX2,
.firmware = "dvb-usb-vp7045-01.fw",
- .size_of_priv = sizeof(u8 *),
+ .size_of_priv = 20,
.num_adapters = 1,
.adapter = {
@@ -305,7 +287,7 @@ static struct dvb_usb_device_properties vp7045_properties = {
static struct usb_driver vp7045_usb_driver = {
.name = "dvb_usb_vp7045",
.probe = vp7045_usb_probe,
- .disconnect = vp7045_usb_disconnect,
+ .disconnect = dvb_usb_device_exit,
.id_table = vp7045_usb_table,
};
--
1.7.6
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH] [media] vp7045: fix buffer setup
2011-08-02 12:29 ` [PATCH] [media] vp7045: fix buffer setup Florian Mickler
@ 2011-08-03 19:02 ` Tino Keitel
2011-08-09 20:08 ` Tino Keitel
0 siblings, 1 reply; 18+ messages in thread
From: Tino Keitel @ 2011-08-03 19:02 UTC (permalink / raw)
To: Florian Mickler; +Cc: mchehab, linux-kernel, error27
On Tue, Aug 02, 2011 at 14:29:05 +0200, Florian Mickler wrote:
> dvb_usb_device_init calls the frontend_attach method of this driver which
> uses vp7045_usb_ob. In order to have a buffer ready in vp7045_usb_op, it has to
> be allocated before that happens.
>
> Luckily we can use the whole private data as the buffer as it gets separately
> allocated on the heap via kzalloc in dvb_usb_device_init and is thus apt for
> use via usb_control_msg.
>
> This fixes a
> BUG: unable to handle kernel paging request at 0000000000001e78
>
> reported by Tino Keitel and diagnosed by Dan Carpenter.
>
> Reported-by: Tino Keitel <tino.keitel@tikei.de>
> Reported-by: Dan Carpenter <error27@gmail.com>
> Signed-off-by: Florian Mickler <florian@mickler.org>
> ---
>
> Tino, can you test this?
Hi,
thanks for the patch. It works fine on top of 3.0. No more Oops at
boot, and the DVB-T receiver is working.
Regards,
Tino
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] [media] vp7045: fix buffer setup
2011-08-03 19:02 ` Tino Keitel
@ 2011-08-09 20:08 ` Tino Keitel
2011-08-10 9:46 ` Florian Mickler
2011-08-10 10:05 ` Florian Mickler
0 siblings, 2 replies; 18+ messages in thread
From: Tino Keitel @ 2011-08-09 20:08 UTC (permalink / raw)
To: Florian Mickler, mchehab, linux-kernel, error27
On Wed, Aug 03, 2011 at 21:02:04 +0200, Tino Keitel wrote:
[...]
> Hi,
>
> thanks for the patch. It works fine on top of 3.0. No more Oops at
> boot, and the DVB-T receiver is working.
>
> Regards,
> Tino
Hi,
I didn't see the patch show up in git yet. This is a prerequisite to
include it in 3.0.x AFAIK.
Regards,
Tino
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] [media] vp7045: fix buffer setup
2011-08-09 20:08 ` Tino Keitel
@ 2011-08-10 9:46 ` Florian Mickler
2011-08-10 10:05 ` Florian Mickler
1 sibling, 0 replies; 18+ messages in thread
From: Florian Mickler @ 2011-08-10 9:46 UTC (permalink / raw)
To: Tino Keitel; +Cc: mchehab, linux-kernel, error27
On Tue, 9 Aug 2011 22:08:43 +0200
Tino Keitel <tino.keitel@tikei.de> wrote:
> On Wed, Aug 03, 2011 at 21:02:04 +0200, Tino Keitel wrote:
>
> [...]
>
> > Hi,
> >
> > thanks for the patch. It works fine on top of 3.0. No more Oops at
> > boot, and the DVB-T receiver is working.
> >
> > Regards,
> > Tino
>
> Hi,
>
> I didn't see the patch show up in git yet. This is a prerequisite to
> include it in 3.0.x AFAIK.
>
> Regards,
> Tino
Yes, I pinged Mauro yesterday about it but didn't hear back. I remember
in the back of my head that Mauro uses patchwork on the linux-media
list, so that is where I will resend the patch...
Regards,
Flo
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH] [media] vp7045: fix buffer setup
2011-08-09 20:08 ` Tino Keitel
2011-08-10 9:46 ` Florian Mickler
@ 2011-08-10 10:05 ` Florian Mickler
2011-08-19 16:35 ` Florian Mickler
1 sibling, 1 reply; 18+ messages in thread
From: Florian Mickler @ 2011-08-10 10:05 UTC (permalink / raw)
To: mchehab; +Cc: tino.keitel, linux-media, linux-kernel, Florian Mickler, v3.0.y
dvb_usb_device_init calls the frontend_attach method of this driver which
uses vp7045_usb_ob. In order to have a buffer ready in vp7045_usb_op, it has to
be allocated before that happens.
Luckily we can use the whole private data as the buffer as it gets separately
allocated on the heap via kzalloc in dvb_usb_device_init and is thus apt for
use via usb_control_msg.
This fixes a
BUG: unable to handle kernel paging request at 0000000000001e78
reported by Tino Keitel and diagnosed by Dan Carpenter.
References: https://bugzilla.kernel.org/show_bug.cgi?id=40062
Cc: v3.0.y <stable@kernel.org>
Tested-by: Tino Keitel <tino.keitel@tikei.de>
Signed-off-by: Florian Mickler <florian@mickler.org>
---
drivers/media/dvb/dvb-usb/vp7045.c | 26 ++++----------------------
1 files changed, 4 insertions(+), 22 deletions(-)
diff --git a/drivers/media/dvb/dvb-usb/vp7045.c b/drivers/media/dvb/dvb-usb/vp7045.c
index 3db89e3..536c16c 100644
--- a/drivers/media/dvb/dvb-usb/vp7045.c
+++ b/drivers/media/dvb/dvb-usb/vp7045.c
@@ -224,26 +224,8 @@ static struct dvb_usb_device_properties vp7045_properties;
static int vp7045_usb_probe(struct usb_interface *intf,
const struct usb_device_id *id)
{
- struct dvb_usb_device *d;
- int ret = dvb_usb_device_init(intf, &vp7045_properties,
- THIS_MODULE, &d, adapter_nr);
- if (ret)
- return ret;
-
- d->priv = kmalloc(20, GFP_KERNEL);
- if (!d->priv) {
- dvb_usb_device_exit(intf);
- return -ENOMEM;
- }
-
- return ret;
-}
-
-static void vp7045_usb_disconnect(struct usb_interface *intf)
-{
- struct dvb_usb_device *d = usb_get_intfdata(intf);
- kfree(d->priv);
- dvb_usb_device_exit(intf);
+ return dvb_usb_device_init(intf, &vp7045_properties,
+ THIS_MODULE, NULL, adapter_nr);
}
static struct usb_device_id vp7045_usb_table [] = {
@@ -258,7 +240,7 @@ MODULE_DEVICE_TABLE(usb, vp7045_usb_table);
static struct dvb_usb_device_properties vp7045_properties = {
.usb_ctrl = CYPRESS_FX2,
.firmware = "dvb-usb-vp7045-01.fw",
- .size_of_priv = sizeof(u8 *),
+ .size_of_priv = 20,
.num_adapters = 1,
.adapter = {
@@ -305,7 +287,7 @@ static struct dvb_usb_device_properties vp7045_properties = {
static struct usb_driver vp7045_usb_driver = {
.name = "dvb_usb_vp7045",
.probe = vp7045_usb_probe,
- .disconnect = vp7045_usb_disconnect,
+ .disconnect = dvb_usb_device_exit,
.id_table = vp7045_usb_table,
};
--
1.7.6
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH] [media] vp7045: fix buffer setup
2011-08-10 10:05 ` Florian Mickler
@ 2011-08-19 16:35 ` Florian Mickler
2011-08-24 16:26 ` Tino Keitel
0 siblings, 1 reply; 18+ messages in thread
From: Florian Mickler @ 2011-08-19 16:35 UTC (permalink / raw)
To: mchehab; +Cc: Florian Mickler, tino.keitel, linux-media, linux-kernel, v3.0.y
On Wed, 10 Aug 2011 12:05:20 +0200
Florian Mickler <florian@mickler.org> wrote:
> dvb_usb_device_init calls the frontend_attach method of this driver which
> uses vp7045_usb_ob. In order to have a buffer ready in vp7045_usb_op, it has to
> be allocated before that happens.
>
> Luckily we can use the whole private data as the buffer as it gets separately
> allocated on the heap via kzalloc in dvb_usb_device_init and is thus apt for
> use via usb_control_msg.
>
> This fixes a
> BUG: unable to handle kernel paging request at 0000000000001e78
>
> reported by Tino Keitel and diagnosed by Dan Carpenter.
>
> References: https://bugzilla.kernel.org/show_bug.cgi?id=40062
> Cc: v3.0.y <stable@kernel.org>
> Tested-by: Tino Keitel <tino.keitel@tikei.de>
> Signed-off-by: Florian Mickler <florian@mickler.org>
...ping...
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] [media] vp7045: fix buffer setup
2011-08-19 16:35 ` Florian Mickler
@ 2011-08-24 16:26 ` Tino Keitel
0 siblings, 0 replies; 18+ messages in thread
From: Tino Keitel @ 2011-08-24 16:26 UTC (permalink / raw)
To: Florian Mickler; +Cc: mchehab, linux-media, linux-kernel, v3.0.y
On Fri, Aug 19, 2011 at 18:35:21 +0200, Florian Mickler wrote:
> On Wed, 10 Aug 2011 12:05:20 +0200
> Florian Mickler <florian@mickler.org> wrote:
>
> > dvb_usb_device_init calls the frontend_attach method of this driver which
> > uses vp7045_usb_ob. In order to have a buffer ready in vp7045_usb_op, it has to
> > be allocated before that happens.
> >
> > Luckily we can use the whole private data as the buffer as it gets separately
> > allocated on the heap via kzalloc in dvb_usb_device_init and is thus apt for
> > use via usb_control_msg.
> >
> > This fixes a
> > BUG: unable to handle kernel paging request at 0000000000001e78
> >
> > reported by Tino Keitel and diagnosed by Dan Carpenter.
> >
> > References: https://bugzilla.kernel.org/show_bug.cgi?id=40062
> > Cc: v3.0.y <stable@kernel.org>
> > Tested-by: Tino Keitel <tino.keitel@tikei.de>
> > Signed-off-by: Florian Mickler <florian@mickler.org>
>
> ...ping...
Even pinger. I can't see the patch in 3.1 git yet, and I'm using the
patch on 3.0 kernels for 2 weeks now without problems.
Regards,
Tino
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2011-08-24 16:26 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-22 19:27 USB related "unable to handle kernel paging request" in 3.0.0-rc7 Tino Keitel
2011-07-25 19:47 ` Maciej Rutecki
2011-08-02 8:54 ` Dan Carpenter
2011-08-02 9:51 ` Florian Mickler
2011-08-02 10:40 ` Florian Mickler
2011-08-02 11:10 ` Florian Mickler
2011-08-02 11:51 ` Florian Mickler
2011-08-02 11:56 ` Dan Carpenter
2011-08-02 11:35 ` Dan Carpenter
2011-08-02 11:40 ` Dan Carpenter
2011-08-02 12:02 ` Florian Mickler
2011-08-02 12:29 ` [PATCH] [media] vp7045: fix buffer setup Florian Mickler
2011-08-03 19:02 ` Tino Keitel
2011-08-09 20:08 ` Tino Keitel
2011-08-10 9:46 ` Florian Mickler
2011-08-10 10:05 ` Florian Mickler
2011-08-19 16:35 ` Florian Mickler
2011-08-24 16:26 ` Tino Keitel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox