From: Greg KH <greg@kroah.com>
To: Chuck Ebbert <76306.1226@compuserve.com>
Cc: Alex Riesen <fork0@t-online.de>,
linux-kernel <linux-kernel@vger.kernel.org>,
Mauro Carvalho Chehab <mchehab@infradead.org>,
Andrew Morton <akpm@osdl.org>,
Stephen Hemminger <shemminger@osdl.org>,
"video4linux-list@redhat.com" <video4linux-list@redhat.com>,
"v4l-dvb-maintainer@linuxtv.org" <v4l-dvb-maintainer@linuxtv.org>
Subject: Re: oops in bttv
Date: Wed, 12 Jul 2006 22:05:41 -0700 [thread overview]
Message-ID: <20060713050541.GA31257@kroah.com> (raw)
In-Reply-To: <200607130047_MC3-1-C4D3-43D6@compuserve.com>
On Thu, Jul 13, 2006 at 12:43:49AM -0400, Chuck Ebbert wrote:
> In-Reply-To: <20060711204940.GA11497@steel.home>
>
> On Tue, 11 Jul 2006 22:49:40 +0200, Alex Riesen wrote:
>
> > What I did was to call settings of the flashplayer and press on the
> > webcam symbol there. The system didn't crash, just this oops:
> >
> > BUG: unable to handle kernel NULL pointer dereference at virtual address 00000065
> > printing eip:
> > c01875b0
> > *pde = 00000000
> > Oops: 0000 [#1]
> > PREEMPT SMP
> > Modules linked in: tuner tvaudio msp3400 bttv video_buf firmware_class ir_common
> > compat_ioctl32 btcx_risc tveeprom videodev v4l2_common nfs vfat fat nfsd export
> > fs lockd sunrpc snd_pcm_oss snd_mixer_oss snd_seq_oss snd_seq_midi_event snd_seq
> > snd_seq_device reiserfs rtc microcode radeon drm intel_agp agpgart snd_intel8x0
> > snd_ac97_codec snd_ac97_bus snd_pcm snd_timer snd soundcore snd_page_alloc sd_m
> > od usb_storage libusual usbhid uhci_hcd usbcore e100
> > CPU: 0
> > EIP: 0060:[<c01875b0>] Not tainted VLI
> > EFLAGS: 00010292 (2.6.18-rc1 #80)
> > EIP is at sysfs_add_file+0x10/0x76
> > eax: 00000001 ebx: f9bd6d14 ecx: 00000004 edx: f9bd6d14
> > esi: f9bde920 edi: 00000001 ebp: dc489eac esp: dc489e94
> > ds: 007b es: 007b ss: 0068
> > Process modprobe (pid: 11377, ti=dc489000 task=f21ff6b0 task.ti=dc489000)
> > Stack: f9bde920 f9bde920 00000004 f9bde920 f9bde920 00000000 dc489eb4 c018763c
> > dc489ebc c0220cc3 dc489ec8 f9bc3073 c19b4800 dc489ee4 f9bc35de 00000000
> > 20bd7818 f9bd7880 f9bd7880 ffffffed dc489ef0 c01c3c1b c19b4800 dc489f04
> > Call Trace:
> > [<c018763c>] sysfs_create_file+0x26/0x28
> > [<c0220cc3>] class_device_create_file+0x14/0x1a
> > [<f9bc3073>] bttv_register_video+0x8c/0x147 [bttv]
> > [<f9bc35de>] bttv_probe+0x4ab/0x593 [bttv]
> > [<c01c3c1b>] pci_call_probe+0xd/0x10
> > [<c01c3c4f>] __pci_device_probe+0x31/0x43
> > [<c01c3c82>] pci_device_probe+0x21/0x34
> > [<c0220429>] driver_probe_device+0x47/0x94
> > [<c0220542>] __driver_attach+0x5e/0x89
> > [<c021fada>] bus_for_each_dev+0x38/0x5d
> > [<c0220581>] driver_attach+0x14/0x16
> > [<c021ff2c>] bus_add_driver+0x5f/0x98
> > [<c02209a8>] driver_register+0x75/0x7a
> > [<c01c3e3e>] __pci_register_driver+0x4f/0x5d
> > [<f9bc3b3b>] bttv_init_module+0x9f/0xa1 [bttv]
> > [<c01325f7>] sys_init_module+0x95/0x1c5
> > [<c010291b>] syscall_call+0x7/0xb
> > [<b7ea781e>] 0xb7ea781e
> > Code: 01 00 00 00 6a 00 e8 f9 cf f8 ff 89 d8 e8 2f 40 fe ff 5b 8d 65 f4 5b 5e 5f 5d c3 55 89 e5 57 89 c7 56 53 89 d3 83 ec 0c 89 4d f0 <8b> 40 64 89 45 ec 8b 47 1c 05 84 00 00 00 0f b7 72 08 c7 45 e8
> > EIP: [<c01875b0>] sysfs_add_file+0x10/0x76 SS:ESP 0068:dc489e94
> >
>
>
> int sysfs_add_file(struct dentry * dir, const struct attribute * attr, int type)
> {
> OOPS==> struct sysfs_dirent * parent_sd = dir->d_fsdata;
> umode_t mode = (attr->mode & S_IALLUGO) | S_IFREG;
>
> dir == 1, which is a strange value for a pointer to have (you can see it in eax.)
>
>
> called from:
>
> int sysfs_create_file(struct kobject * kobj, const struct attribute * attr)
> {
> BUG_ON(!kobj || !kobj->dentry || !attr);
>
> return sysfs_add_file(kobj->dentry, attr, SYSFS_KOBJ_ATTR);
>
> }
>
> so kobj->dentry == 1 here.
>
>
> called from:
>
> int class_device_create_file(struct class_device * class_dev,
> const struct class_device_attribute * attr)
> {
> int error = -EINVAL;
> if (class_dev)
> error = sysfs_create_file(&class_dev->kobj, &attr->attr);
> return error;
> }
>
> so the kobj is in a class_dev.
>
>
> called from:
>
> static int __devinit bttv_register_video(struct bttv *btv)
> {
> if (no_overlay <= 0) {
> bttv_video_template.type |= VID_TYPE_OVERLAY;
> } else {
> printk("bttv: Overlay support disabled.\n");
> }
>
> /* video */
> btv->video_dev = vdev_init(btv, &bttv_video_template, "video");
> if (NULL == btv->video_dev)
> goto err;
> if (video_register_device(btv->video_dev,VFL_TYPE_GRABBER,video_nr)<0)
> goto err;
> printk(KERN_INFO "bttv%d: registered device video%d\n",
> btv->c.nr,btv->video_dev->minor & 0x1f);
> ===> video_device_create_file(btv->video_dev, &class_device_attr_card);
>
> video_device_create_file() is a wrapper for class_device_create_file():
>
> video_device_create_file(struct video_device *vfd,
> struct class_device_attribute *attr)
> {
> class_device_create_file(&vfd->class_dev, attr);
> }
>
>
> The class_dev is created like this, in video_register_device():
>
> memset(&vfd->class_dev, 0x00, sizeof(vfd->class_dev));
> if (vfd->dev)
> vfd->class_dev.dev = vfd->dev;
> vfd->class_dev.class = &video_class;
> vfd->class_dev.devt = MKDEV(VIDEO_MAJOR, vfd->minor);
> sprintf(vfd->class_dev.class_id, "%s%d", name_base, i - base);
> class_device_register(&vfd->class_dev);
> class_device_create_file(&vfd->class_dev,
> &class_device_attr_name);
>
> so it looks like class_device_register() is putting the 1 into the dentry?
> Culprit looks to be class_device_add() in that case.
Perhaps we should check the return value of class_device_register() to
verify that nothing bad happened there? A dentry of 1 is very odd.
If you enable debugging for the driver core and for kobjects (they both
are config options), is there anything interesting in the log right
before this happens?
> I tried tracing through that and... gave up.
Heh, yeah, it's not exactly a "simple" path...
thanks,
greg k-h
next prev parent reply other threads:[~2006-07-13 5:09 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-13 4:43 oops in bttv Chuck Ebbert
2006-07-13 5:05 ` Greg KH [this message]
2006-07-13 5:24 ` Randy.Dunlap
2006-07-13 5:44 ` Andrew Morton
2006-07-15 23:08 ` [PATCH] V4L: struct video_device corruption Robert Fitzsimons
2006-07-16 1:31 ` Mauro Carvalho Chehab
2006-07-18 0:25 ` [v4l-dvb-maintainer] " Trent Piepho
2006-07-19 11:54 ` Mauro Carvalho Chehab
2006-07-19 15:36 ` Michael Krufky
2006-07-20 21:57 ` Trent Piepho
2006-07-21 12:26 ` Mauro Carvalho Chehab
2006-07-21 20:06 ` Trent Piepho
2006-07-21 20:30 ` Mauro Carvalho Chehab
2006-07-21 22:55 ` Trent Piepho
2006-07-23 9:35 ` Mauro Carvalho Chehab
2006-07-24 2:16 ` Trent Piepho
2006-07-24 12:34 ` Mauro Carvalho Chehab
2006-07-24 22:06 ` Trent Piepho
2006-07-25 17:59 ` Mauro Carvalho Chehab
2006-07-25 3:08 ` Andrew Morton
2006-07-25 7:57 ` [v4l-dvb-maintainer] " Manu Abraham
2006-07-25 8:42 ` Trent Piepho
2006-07-25 9:06 ` Andrew Morton
2006-07-25 12:28 ` Mauro Carvalho Chehab
-- strict thread matches above, loose matches on Subject: below --
2006-07-11 20:49 oops in bttv Alex Riesen
2006-07-12 9:44 ` Frederik Deweerdt
2006-07-12 17:54 ` Alex Riesen
2006-07-15 11:29 ` Mauro Carvalho Chehab
2006-07-17 13:34 ` Alex Riesen
2006-07-19 17:09 ` Nish Aravamudan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060713050541.GA31257@kroah.com \
--to=greg@kroah.com \
--cc=76306.1226@compuserve.com \
--cc=akpm@osdl.org \
--cc=fork0@t-online.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mchehab@infradead.org \
--cc=shemminger@osdl.org \
--cc=v4l-dvb-maintainer@linuxtv.org \
--cc=video4linux-list@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.