A small fix in dump_stats() (scsi_merge.c) invoked when (struct req) has inconsistent number of segments. The list formed by b_reqnext is null terminated, so the current code is simply wrong: it can cause a oops if (req->bh) is NULL, or it fails to print the last element in the b_reqnext chain. -- -------------------------------------------------------------------------- Rajagopal Ananthanarayanan ("ananth") Member Technical Staff, SGI. --------------------------------------------------------------------------
--- ../../linux-2.4.2/linux/drivers/scsi/scsi_merge.c Fri Feb 9 11:30:23 2001 +++ drivers/scsi/scsi_merge.c Wed Feb 28 11:55:48 2001 @@ -90,7 +90,7 @@ printk("nr_segments is %x\n", req->nr_segments); printk("counted segments is %x\n", segments); printk("Flags %d %d\n", use_clustering, dma_host); - for (bh = req->bh; bh->b_reqnext != NULL; bh = bh->b_reqnext) + for (bh = req->bh; bh != NULL; bh = bh->b_reqnext) { printk("Segment 0x%p, blocks %d, addr 0x%lx\n", bh,