Messages in this thread Patch in this message | | | Date | Mon, 8 Mar 2004 01:50:46 -0500 (EST) | From | Zwane Mwaikambo <> | Subject | Re: OOPS when copying data from local to an external drive (ieee1394) |
| |
On Sun, 7 Mar 2004, Dmitry Torokhov wrote:
> I started getting oopses when cpying data from local IDE to an external > Firewire drive. Not always, but quite often. The kernel is a bk pull a > day before 2.6.4-rc2 was released, I do not see any ieee1394 updates > since. > > Unfortunately the oops was not saves in the logs, so here is what I managed > to write down:
> Oops: 00002 [#1] > PREEMPT > CPU: 0 > EIP: 0060 [<c0243d087>] Tainted: P > EFLAGS: 00010047 > EIP is at hpsb_packet_sent+0x86/0x90 > eax: 00100100 ebx: dfd74000 ecx: dd6edfb0 edx: 00200200
A spot of linked list corruption.
> esi: 00000001 edi: dd6cdf60 ebp: c03e3ee0 esp: c03c3edc > ds: 007b es: 007b ss: 0068 > Process swapper (pid: 0; threadinfo=c03c2000, task=c034a800) > .... > Call trace: > [<co25306e>] dma_trm_tasklet+0xae/0x1b0
Does this patch help any?
Index: linux-2.6.4-rc1-mm2/drivers/ieee1394/ieee1394_core.c =================================================================== RCS file: /home/cvsroot/linux-2.6.4-rc1-mm2/drivers/ieee1394/ieee1394_core.c,v retrieving revision 1.1.1.1 diff -u -p -B -r1.1.1.1 ieee1394_core.c --- linux-2.6.4-rc1-mm2/drivers/ieee1394/ieee1394_core.c 4 Mar 2004 04:12:44 -0000 1.1.1.1 +++ linux-2.6.4-rc1-mm2/drivers/ieee1394/ieee1394_core.c 8 Mar 2004 06:47:04 -0000 @@ -403,6 +403,8 @@ void hpsb_selfid_complete(struct hpsb_ho void hpsb_packet_sent(struct hpsb_host *host, struct hpsb_packet *packet, int ackcode) { + unsigned long flags; + packet->ack_code = ackcode;
if (packet->no_waiter) { @@ -413,7 +415,9 @@ void hpsb_packet_sent(struct hpsb_host *
if (ackcode != ACK_PENDING || !packet->expect_response) { atomic_dec(&packet->refcnt); + spin_lock_irqsave(&host->pending_pkt_lock, flags); list_del(&packet->list); + spin_unlock_irqrestore(&host->pending_pkt_lock, flags); packet->state = hpsb_complete; queue_packet_complete(packet); return; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |