[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <471720FE.4090004@garzik.org>
Date: Thu, 18 Oct 2007 05:01:50 -0400
From: Jeff Garzik <jeff@...zik.org>
To: Jens Axboe <jens.axboe@...cle.com>
CC: Ingo Molnar <mingo@...e.hu>,
Linus Torvalds <torvalds@...ux-foundation.org>,
linux-kernel@...r.kernel.org, Alan Cox <alan@...rguk.ukuu.org.uk>
Subject: Re: [bug] ata subsystem related crash with latest -git
Jens Axboe wrote:
> index 4df8311..b858183 100644
> --- a/drivers/ata/sata_mv.c
> +++ b/drivers/ata/sata_mv.c
> @@ -1139,6 +1139,7 @@ static void mv_fill_sg(struct ata_queued_cmd *qc)
> struct mv_port_priv *pp = qc->ap->private_data;
> struct scatterlist *sg;
> struct mv_sg *mv_sg;
> + int end_marked = 0;
>
> mv_sg = pp->sg_tbl;
> ata_for_each_sg(sg, qc) {
> @@ -1159,13 +1160,15 @@ static void mv_fill_sg(struct ata_queued_cmd *qc)
> sg_len -= len;
> addr += len;
>
> - if (!sg_len && ata_sg_is_last(sg, qc))
> + if (!sg_len && ata_sg_is_last(sg, qc)) {
> mv_sg->flags_size |= cpu_to_le32(EPRD_FLAG_END_OF_TBL);
> + end_marked++;
> + }
>
> mv_sg++;
> }
> -
> }
> + BUG_ON(end_marked != 1);
Your BUG_ON() does indeed trip, here.
Its surprising that other folks don't explode, considering that
mv_fill_sg() intentionally mirrors the logic in ata_fill_sg().
Jeff
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists