Subject: Re: repeatable kernel page fault trap in fwohci
To: Christopher Tribo <t1345@hopi.dtcc.edu>
From: Matthias Drochner <M.Drochner@fz-juelich.de>
List: current-users
Date: 04/01/2003 17:34:49
This is a multipart MIME message.

--==_Exmh_5685216699580
Content-Type: text/plain; charset=us-ascii


t1345@hopi.dtcc.edu said:
> kernel : page fault trap code=0 Stopped in pid 2.1 (fwohci0) at
> sbp2_abort+0x1a: cmpl 0x44(%eax), %ecx 

This looks familiar.
I've told James about the broken sbp2_free() a while ago.
For now, I can only offer the appended patch.

best regards
Matthias



--==_Exmh_5685216699580
Content-Type: text/plain ; name="fwpatch"; charset=us-ascii
Content-Description: fwpatch
Content-Disposition: attachment; filename="fwpatch"

Index: sbp2.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ieee1394/sbp2.c,v
retrieving revision 1.16
diff -u -r1.16 sbp2.c
--- sbp2.c	2003/03/07 20:18:57	1.16
+++ sbp2.c	2003/04/01 15:26:38
@@ -669,12 +669,15 @@
 	while (CIRCLEQ_FIRST(&sbp2->orbs) != (void *)&sbp2->orbs) {
 		orb = CIRCLEQ_FIRST(&sbp2->orbs);
 		(void)sbp2_abort(orb);
+		CIRCLEQ_REMOVE(&sbp2->orbs, orb, orb_list);
 		sbp2_free_orb(orb);
 	}
+#if 0
 	orb = CIRCLEQ_FIRST(&sbp2->orbs);
 	(void)sbp2_abort(orb);
 	CIRCLEQ_REMOVE(&sbp2->orbs, orb, orb_list);
 	sbp2_free_orb(orb);
+#endif
 
 	while (TAILQ_FIRST(&sbp2->luns) != NULL) {
 		lun = TAILQ_FIRST(&sbp2->luns);

--==_Exmh_5685216699580--