All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Dittmer <jdittmer@ppp0.net>
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Cc: linux1394-devel@lists.sourceforge.net, bcollins@debian.org
Subject: Oops in dv1394_remove_host (inkl. fix)
Date: Thu, 23 Sep 2004 17:15:28 +0200	[thread overview]
Message-ID: <4152E890.5030500@ppp0.net> (raw)

I was playing around with dummyphp. When removing the pci device
of ohci1394 I got an oops due to the missing initialization
of the .name attribute of the dummy driver (I think).
The code in question is this (in dv1394.c, dv1394_remove_host):

        /* We only work with the OHCI-1394 driver */
        if (strcmp(host->driver->name, OHCI1394_DRIVER_NAME))
                return;

Additionally I think this check will never be true, because
host->driver is set to &dummy before calling the
remove_hosts functions of the sublevel drivers
(hosts.c, remove_host):

        host->driver = &dummy_driver;

        highlevel_remove_host(host);

highlevel_remove_host calls dv1394_remove_host.

The following should fix the oops:

--- 2.6/drivers/ieee1394/hosts.c.orig   2004-09-23 16:57:58.000000000 +0200
+++ 2.6/drivers/ieee1394/hosts.c        2004-09-23 16:58:00.000000000 +0200
@@ -76,7 +76,8 @@
 static struct hpsb_host_driver dummy_driver = {
         .transmit_packet = dummy_transmit_packet,
         .devctl =          dummy_devctl,
-       .isoctl =          dummy_isoctl
+       .isoctl =          dummy_isoctl,
+       .name = "dummy"
 };

 static int alloc_hostnum_cb(struct hpsb_host *host, void *__data)


Thanks,

Jan

ieee1394: Node removed: ID:BUS[0-00:1023]  GUID[0800460301101508]
Unable to handle kernel NULL pointer dereference at virtual address 00000000
 printing eip:
c02d2aa8
*pde = 097eb001
*pte = 00000000
Oops: 0000 [#1]
PREEMPT SMP
Modules linked in: dummyphp pci_hotplug orinoco_cs orinoco hermes ds ipv6 ppp_generic slhc ipt_state iptable_filter iptable_mangle ipt_MASQUERADE iptable_nat ip_conntrack iptable_raw ip_tables hci_usb yenta_socket pcmcia_core eeprom i2c_sensor i2c_isa i2c_i810 i2c_algo_bit i2c_i801 i2c_core pl2303 usbserial
CPU:    0
EIP:    0060:[<c02d2aa8>]    Not tainted VLI
EFLAGS: 00010286   (2.6.9-rc2-bk8-numa)
EIP is at dv1394_remove_host+0x18/0xc0
eax: c04895fc   ebx: 00000000   ecx: 00000000   edx: c02d2a90
esi: 00000000   edi: c03faa6e   ebp: c048a920   esp: cd842e54
ds: 007b   es: 007b   ss: 0068
Process bash (pid: 2764, threadinfo=cd842000 task=ceea7aa0)
Stack: c048a920 cf470000 cf470000 c048a920 c02b970b cd842e68 c02b9258 c048a640
       cf470000 00000000 c048a920 cf470000 c0489634 cf47209c c02ba10b cf470000
       c048a084 cae1eb40 c02b9139 cfe67000 c02c65c3 cf454140 cf433098 cf471f38
Call Trace:
 [<c02b970b>] __unregister_host+0xbb/0xc0
 [<c02b9258>] hl_get_hostinfo+0x48/0x60
 [<c02ba10b>] highlevel_remove_host+0x3b/0x70
 [<c02b9139>] hpsb_remove_host+0x39/0x60
 [<c02c65c3>] ohci1394_pci_remove+0x53/0x220
 [<c021e8f8>] pci_device_remove+0x28/0x30
 [<c02812b6>] device_release_driver+0x56/0x60
 [<c02814f5>] bus_remove_device+0x55/0xa0
 [<c028046c>] device_del+0x5c/0xa0
 [<c02804b8>] device_unregister+0x8/0x10
 [<c021ca30>] pci_destroy_dev+0x10/0x70
 [<d4f194b6>] disable_slot+0x76/0x100 [dummyphp]
 [<d4f14798>] power_write_file+0x118/0x170 [pci_hotplug]
 [<d4f14680>] power_write_file+0x0/0x170 [pci_hotplug]
 [<d4f14066>] hotplug_slot_attr_store+0x36/0x40 [pci_hotplug]
 [<c018efab>] flush_write_buffer+0x2b/0x40
 [<c018f001>] sysfs_write_file+0x41/0x50
 [<c015dda0>] vfs_write+0xb0/0x110
 [<c015dec7>] sys_write+0x47/0x80
 [<c010614b>] syscall_call+0x7/0xb
Code: 89 d8 e8 dc 42 e7 ff 8b 5c 24 38 83 c4 3c c3 8d 74 26 00 55 57 bf 6e aa 3f c0 56 53 8b 98 34 1f 00 00 8b 80 2c 1f 00 00 8b 70 04 <ac> ae 75 08 84 c0 75 f8 31 c0 eb 04 19 c0 0c 01 85 c0 74 05 5b

             reply	other threads:[~2004-09-23 15:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-23 15:15 Jan Dittmer [this message]
2004-09-23 15:26 ` Oops in dv1394_remove_host (inkl. fix) Jan Dittmer

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=4152E890.5030500@ppp0.net \
    --to=jdittmer@ppp0.net \
    --cc=bcollins@debian.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux1394-devel@lists.sourceforge.net \
    /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.