All of lore.kernel.org
 help / color / mirror / Atom feed
* 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card
@ 2007-01-26 21:35 Pieter Palmers
  2007-01-26 22:50 ` Stefan Richter
  0 siblings, 1 reply; 8+ messages in thread
From: Pieter Palmers @ 2007-01-26 21:35 UTC (permalink / raw)
  To: linux-kernel; +Cc: Linux1394-Devel

I get the following Oops when ejecting a firewire cardbus controller.
The kernel is a 2.6.20-rc6 (git pull from a few hours ago), patched with 
Ingo's -rt2 patch.

cc'ing linux1394-devel because it seems to be a problem in the ieee1394 
stack.

Pieter

Jan 26 22:29:37 localhost kernel: pccard: card ejected from slot 0
Jan 26 22:29:37 localhost kernel: BUG: unable to handle kernel NULL 
pointer dereference at virtual address 00000000
Jan 26 22:29:37 localhost kernel:  printing eip:
Jan 26 22:29:37 localhost kernel: f91c8a6d
Jan 26 22:29:37 localhost kernel: *pde = 05c64067
Jan 26 22:29:37 localhost kernel: stopped custom tracer.
Jan 26 22:29:37 localhost kernel: Oops: 0000 [#1]
Jan 26 22:29:37 localhost kernel: PREEMPT
Jan 26 22:29:37 localhost kernel: Modules linked in: raw1394 dv1394 
ohci1394 ieee1394 nfsd exportfs lockd nfs_acl autofs4 hidp rfcomm l2cap 
bluetooth sunrp
c vfat fat radeon drm nvram snd_intel8x0m snd_intel8x0 snd_ac97_codec 
ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
snd_seq_device snd_pcm_
oss snd_mixer_oss snd_pcm joydev snd_timer snd uhci_hcd i2c_i801 
soundcore ipw2200 ieee80211 ieee80211_crypt 8139too mii i2c_core pcspkr 
snd_page_alloc rng
_core ext3 jbd
Jan 26 22:29:37 localhost kernel: CPU:    0
Jan 26 22:29:37 localhost kernel: EIP:    0060:[<f91c8a6d>]    Not 
tainted VLI
Jan 26 22:29:37 localhost kernel: EFLAGS: 00010286   (2.6.20-rc6-rt2 #9)
Jan 26 22:29:37 localhost kernel: EIP is at dv1394_remove_host+0x17/0xc0 
[dv1394]
Jan 26 22:29:37 localhost kernel: eax: f88fd140   ebx: 00000001   ecx: 
00000000   edx: f91c8a56
Jan 26 22:29:37 localhost kernel: esi: 00000000   edi: f91c9910   ebp: 
00000000   esp: f7e49ebc
Jan 26 22:29:37 localhost kernel: ds: 007b   es: 007b   ss: 0068 
preempt: 00000001
Jan 26 22:29:37 localhost kernel: Process pccardd (pid: 284, ti=f7e48000 
task=f7f68ab0 task.ti=f7e48000)
Jan 26 22:29:37 localhost kernel: Stack: f91cb540 ee588000 f91cb540 
f88ea50f d4142180 ee588000 00000000 f91cb540
Jan 26 22:29:37 localhost kernel:        ee588000 00000000 ee589a84 
f88ea759 ee588000 f8950e94 f88ea18a f7e71400
Jan 26 22:29:37 localhost kernel:        f894a213 f8950f14 ee5880bc 
f7e71400 f8950e94 00000000 f7eae048 c01c0caf
Jan 26 22:29:37 localhost kernel: Call Trace:
Jan 26 22:29:37 localhost kernel:  [<f88ea50f>] 
__unregister_host+0x18/0x8f [ieee1394]
Jan 26 22:29:38 localhost kernel:  [<f88ea759>] 
highlevel_remove_host+0x21/0x42 [ieee1394]
Jan 26 22:29:38 localhost kernel:  [<f88ea18a>] 
hpsb_remove_host+0x37/0x55 [ieee1394]
Jan 26 22:29:38 localhost kernel:  [<f894a213>] 
ohci1394_pci_remove+0x47/0x1e4 [ohci1394]
Jan 26 22:29:38 localhost kernel:  [<c01c0caf>] pci_device_remove+0x16/0x35
Jan 26 22:29:38 localhost kernel:  [<c020fadc>] 
__device_release_driver+0x71/0x87
Jan 26 22:29:38 localhost kernel:  [<c020fba2>] 
device_release_driver+0x18/0x21
Jan 26 22:29:38 localhost kernel:  [<c020f6af>] bus_remove_device+0x70/0x80
Jan 26 22:29:38 localhost kernel:  [<c020e0a9>] device_del+0x13a/0x197
Jan 26 22:29:38 localhost kernel:  [<c020e10e>] device_unregister+0x8/0x10
Jan 26 22:29:38 localhost kernel:  [<c01be718>] pci_stop_dev+0x20/0x4e
Jan 26 22:29:38 localhost kernel:  [<c01be803>] 
pci_remove_bus_device+0x28/0x8c
Jan 26 22:29:38 localhost kernel:  [<c01be881>] 
pci_remove_behind_bridge+0x1a/0x2d
Jan 26 22:29:38 localhost kernel:  [<c022895a>] socket_shutdown+0x6d/0xb3
Jan 26 22:29:38 localhost kernel:  [<c02289bc>] socket_remove+0x1c/0x26
Jan 26 22:29:38 localhost kernel:  [<c0228f97>] pccardd+0x129/0x1ea
Jan 26 22:29:38 localhost kernel:  [<c010e56c>] 
default_wake_function+0x0/0x16
Jan 26 22:29:38 localhost kernel:  [<c0228e6e>] pccardd+0x0/0x1ea
Jan 26 22:29:38 localhost kernel:  [<c01216ce>] kthread+0xa0/0xca
Jan 26 22:29:38 localhost kernel:  [<c012162e>] kthread+0x0/0xca
Jan 26 22:29:38 localhost kernel:  [<c0102fe7>] 
kernel_thread_helper+0x7/0x10
Jan 26 22:29:38 localhost kernel:  =======================
Jan 26 22:29:38 localhost kernel: Code: 1c f9 e8 7f 6c 0e c7 89 da 89 9e 
a8 00 00 00 eb d9 5b 5e c3 57 bf 10 99 1c f9 56 53 8b 98 b0 00 00 00 8b 
80 b4 00 0
0 00 8b 70 04 <ac> ae 75 08 84 c0 75 f8 31 c0 eb 04 19 c0 0c 01 85 c0 0f 
85 8d
Jan 26 22:29:38 localhost kernel: EIP: [<f91c8a6d>] 
dv1394_remove_host+0x17/0xc0 [dv1394] SS:ESP 0068:f7e49ebc

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card
  2007-01-26 21:35 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card Pieter Palmers
@ 2007-01-26 22:50 ` Stefan Richter
  2007-01-27  8:42   ` Pieter Palmers
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Richter @ 2007-01-26 22:50 UTC (permalink / raw)
  To: Pieter Palmers; +Cc: linux-kernel, Linux1394-Devel

Pieter Palmers wrote:
> cc'ing linux1394-devel because it seems to be a problem in the ieee1394 
> stack.

Yes, this bug is in stock Linux 2.6 too. Ever has been.
http://bugzilla.kernel.org/show_bug.cgi?id=7121
-- 
Stefan Richter
-=====-=-=== ---= ==-=-
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card
  2007-01-26 22:50 ` Stefan Richter
@ 2007-01-27  8:42   ` Pieter Palmers
  2007-01-27  9:00     ` Stefan Richter
  0 siblings, 1 reply; 8+ messages in thread
From: Pieter Palmers @ 2007-01-27  8:42 UTC (permalink / raw)
  To: Stefan Richter; +Cc: linux-kernel, Linux1394-Devel

Stefan Richter wrote:
> Pieter Palmers wrote:
>> cc'ing linux1394-devel because it seems to be a problem in the ieee1394 
>> stack.
> 
> Yes, this bug is in stock Linux 2.6 too. Ever has been.
> http://bugzilla.kernel.org/show_bug.cgi?id=7121
Oops, missed that. Sorry for the noise.

Pieter

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card
  2007-01-27  8:42   ` Pieter Palmers
@ 2007-01-27  9:00     ` Stefan Richter
  2007-01-27  9:18       ` Pieter Palmers
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Richter @ 2007-01-27  9:00 UTC (permalink / raw)
  To: Pieter Palmers; +Cc: linux-kernel, Linux1394-Devel

Pieter Palmers wrote:
> Stefan Richter wrote:
>> http://bugzilla.kernel.org/show_bug.cgi?id=7121
> Oops, missed that. Sorry for the noise.

No, it's OK. We have a pile of old open bugs, and those that are rubbed
in our face more often might even get a chance to be fixed some day... :-/
-- 
Stefan Richter
-=====-=-=== ---= ==-==
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card
  2007-01-27  9:00     ` Stefan Richter
@ 2007-01-27  9:18       ` Pieter Palmers
  2007-01-27  9:45         ` Stefan Richter
  0 siblings, 1 reply; 8+ messages in thread
From: Pieter Palmers @ 2007-01-27  9:18 UTC (permalink / raw)
  To: Stefan Richter; +Cc: Linux1394-Devel, linux-kernel

Stefan Richter wrote:
> Pieter Palmers wrote:
>> Stefan Richter wrote:
>>> http://bugzilla.kernel.org/show_bug.cgi?id=7121
>> Oops, missed that. Sorry for the noise.
> 
> No, it's OK. We have a pile of old open bugs, and those that are rubbed
> in our face more often might even get a chance to be fixed some day... :-/

OTOH, dv1394 is scheduled for removal. Not that we should tolerate bugs 
in the Linux kernel ;), but it lowers priority I guess.

For me the solution is simple: I don't need dv1394, so I just don't 
build it anymore. It has the annoying tendency to auto-load when raw1394 
is loaded.

Pieter

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card
  2007-01-27  9:18       ` Pieter Palmers
@ 2007-01-27  9:45         ` Stefan Richter
  2007-01-27 12:52           ` [PATCH 1/2] ieee1394: dv1394: fix CardBus card ejection Stefan Richter
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Richter @ 2007-01-27  9:45 UTC (permalink / raw)
  To: Pieter Palmers; +Cc: linux1394-devel, linux-kernel

Pieter Palmers wrote:
> OTOH, dv1394 is scheduled for removal. Not that we should tolerate bugs
> in the Linux kernel ;), but it lowers priority I guess.

It does. (Plus I didn't have a Linux box with CardBus slot in operation
for a while, but now I have.)

> For me the solution is simple: I don't need dv1394, so I just don't
> build it anymore. It has the annoying tendency to auto-load when raw1394
> is loaded.

This is a correlation but not a causality. dv1394's and raw1394's
_device_id tables for driver matching both match AV/C devices.
-- 
Stefan Richter
-=====-=-=== ---= ==-==
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/2] ieee1394: dv1394: fix CardBus card ejection
  2007-01-27  9:45         ` Stefan Richter
@ 2007-01-27 12:52           ` Stefan Richter
  2007-01-27 12:54             ` [PATCH 2/2] ieee1394: dv1394: tidy up card removal Stefan Richter
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Richter @ 2007-01-27 12:52 UTC (permalink / raw)
  To: Pieter Palmers; +Cc: linux1394-devel, linux-kernel

Fix NULL pointer dereference on hot ejection of a FireWire card while
dv1394 was loaded.  http://bugzilla.kernel.org/show_bug.cgi?id=7121
I did not test card ejection with open /dev/dv1394 files yet.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
---
 drivers/ieee1394/dv1394.c |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)

Index: linux-2.6.20-rc6/drivers/ieee1394/dv1394.c
===================================================================
--- linux-2.6.20-rc6.orig/drivers/ieee1394/dv1394.c	2007-01-27 13:28:39.000000000 +0100
+++ linux-2.6.20-rc6/drivers/ieee1394/dv1394.c	2007-01-27 13:30:05.000000000 +0100
@@ -2267,11 +2267,7 @@ static void dv1394_remove_host (struct h
 {
 	struct video_card *video;
 	unsigned long flags;
-	int id = host->id;
-
-	/* We only work with the OHCI-1394 driver */
-	if (strcmp(host->driver->name, OHCI1394_DRIVER_NAME))
-		return;
+	int id = host->id, found_ohci_card = 0;
 
 	/* find the corresponding video_cards */
 	do {
@@ -2284,6 +2280,7 @@ static void dv1394_remove_host (struct h
 			if ((tmp_vid->id >> 2) == id) {
 				list_del(&tmp_vid->list);
 				video = tmp_vid;
+				found_ohci_card = 1;
 				break;
 			}
 		}
@@ -2293,8 +2290,9 @@ static void dv1394_remove_host (struct h
 			dv1394_un_init(video);
 	} while (video != NULL);
 
-	class_device_destroy(hpsb_protocol_class,
-		MKDEV(IEEE1394_MAJOR, IEEE1394_MINOR_BLOCK_DV1394 * 16 + (id<<2)));
+	if (found_ohci_card)
+		class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR,
+			   IEEE1394_MINOR_BLOCK_DV1394 * 16 + (host->id << 2)));
 }
 
 static void dv1394_add_host (struct hpsb_host *host)


-- 
Stefan Richter
-=====-=-=== ---= ==-==
http://arcgraph.de/sr/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/2] ieee1394: dv1394: tidy up card removal
  2007-01-27 12:52           ` [PATCH 1/2] ieee1394: dv1394: fix CardBus card ejection Stefan Richter
@ 2007-01-27 12:54             ` Stefan Richter
  0 siblings, 0 replies; 8+ messages in thread
From: Stefan Richter @ 2007-01-27 12:54 UTC (permalink / raw)
  To: Pieter Palmers; +Cc: linux1394-devel, linux-kernel

small coding style touch-up and terser coding

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
---
 drivers/ieee1394/dv1394.c |   36 +++++++++++++-----------------------
 1 files changed, 13 insertions(+), 23 deletions(-)

Index: linux-2.6.20-rc6/drivers/ieee1394/dv1394.c
===================================================================
--- linux-2.6.20-rc6.orig/drivers/ieee1394/dv1394.c	2007-01-27 13:30:05.000000000 +0100
+++ linux-2.6.20-rc6/drivers/ieee1394/dv1394.c	2007-01-27 13:34:14.000000000 +0100
@@ -2255,47 +2255,37 @@ static int dv1394_init(struct ti_ohci *o
 	return 0;
 }
 
-static void dv1394_un_init(struct video_card *video)
+static void dv1394_remove_host(struct hpsb_host *host)
 {
-	/* obviously nobody has the driver open at this point */
-	do_dv1394_shutdown(video, 1);
-	kfree(video);
-}
-
-
-static void dv1394_remove_host (struct hpsb_host *host)
-{
-	struct video_card *video;
+	struct video_card *video, *tmp_video;
 	unsigned long flags;
-	int id = host->id, found_ohci_card = 0;
+	int found_ohci_card = 0;
 
-	/* find the corresponding video_cards */
 	do {
-		struct video_card *tmp_vid;
-
 		video = NULL;
-
 		spin_lock_irqsave(&dv1394_cards_lock, flags);
-		list_for_each_entry(tmp_vid, &dv1394_cards, list) {
-			if ((tmp_vid->id >> 2) == id) {
-				list_del(&tmp_vid->list);
-				video = tmp_vid;
+		list_for_each_entry(tmp_video, &dv1394_cards, list) {
+			if ((tmp_video->id >> 2) == host->id) {
+				list_del(&tmp_video->list);
+				video = tmp_video;
 				found_ohci_card = 1;
 				break;
 			}
 		}
 		spin_unlock_irqrestore(&dv1394_cards_lock, flags);
 
-		if (video)
-			dv1394_un_init(video);
-	} while (video != NULL);
+		if (video) {
+			do_dv1394_shutdown(video, 1);
+			kfree(video);
+		}
+	} while (video);
 
 	if (found_ohci_card)
 		class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR,
 			   IEEE1394_MINOR_BLOCK_DV1394 * 16 + (host->id << 2)));
 }
 
-static void dv1394_add_host (struct hpsb_host *host)
+static void dv1394_add_host(struct hpsb_host *host)
 {
 	struct ti_ohci *ohci;
 	int id = host->id;


-- 
Stefan Richter
-=====-=-=== ---= ==-==
http://arcgraph.de/sr/


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2007-01-27 12:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-26 21:35 2.6.20-rc6-rt2: kernel oops when ejecting cardbus firewire card Pieter Palmers
2007-01-26 22:50 ` Stefan Richter
2007-01-27  8:42   ` Pieter Palmers
2007-01-27  9:00     ` Stefan Richter
2007-01-27  9:18       ` Pieter Palmers
2007-01-27  9:45         ` Stefan Richter
2007-01-27 12:52           ` [PATCH 1/2] ieee1394: dv1394: fix CardBus card ejection Stefan Richter
2007-01-27 12:54             ` [PATCH 2/2] ieee1394: dv1394: tidy up card removal Stefan Richter

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.