On Mon, 6 Mar 2006, Jesper Juhl wrote:
>
> Ok, booting a plain 2.6.16-rc5-mm2 kernel with the above being the
> only change made results in this :
Yeah. I'm not surprised. A real mode-sense shouldn't be even 64 bytes,
much less 96, so it shouldn't have overflowed, and we had no indication of
the corruption spreading past the one allocation anyway.
It did/does seem a bug, though, so worth checking.
So onward in our tireless battle. Does this patch make any difference for
you? It does two things:
- it clears the "->sense" buffer in blk_end_sync_rq() (since it won't be
valid any more: the request is gone)
- it adds a BUG_ON() if we appear to have already done the sense fill on
SCSI IO completion, and do it again.
Now, I've not tried either of these, and the BUG_ON() in particular might
be a false positive itself, but it might be worth testing.
Linus
---
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
index 03d9c82..4351d34 100644
--- a/block/ll_rw_blk.c
+++ b/block/ll_rw_blk.c
@@ -2637,6 +2637,7 @@ void blk_end_sync_rq(struct request *rq,
struct completion *waiting = rq->waiting;
rq->waiting = NULL;
+ rq->sense = NULL;
__blk_put_request(rq->q, rq);
/*
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 701a328..2b60769 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -961,6 +961,10 @@ void scsi_io_completion(struct scsi_cmnd
if (result) {
clear_errors = 0;
if (sense_valid && req->sense) {
+
+ /* Have we already filled the sense buffer? */
+ BUG_ON(req->sense_len);
+
/*
* SG_IO wants current and deferred errors
*/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]