ide: BUG() on unknown requests
Bartlomiej Zolnierkiewicz [Mon, 15 Jun 2009 20:16:10 +0000 (22:16 +0200)]
Unsupported requests should be never handed down to device drivers
and the best thing we can do upon discovering such request inside
driver's ->do_request method is to just BUG().

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

drivers/ide/ide-cd.c
drivers/ide/ide-disk.c
drivers/ide/ide-floppy.c
drivers/ide/ide-tape.c

index dcd7244..0b7645b 100644 (file)
@@ -785,12 +785,8 @@ static ide_startstop_t ide_cd_do_request(ide_drive_t *drive, struct request *rq,
                /* right now this can only be a reset... */
                uptodate = 1;
                goto out_end;
-       } else {
-               blk_dump_rq_flags(rq, DRV_NAME " bad flags");
-               if (rq->errors == 0)
-                       rq->errors = -EIO;
-               goto out_end;
-       }
+       } else
+               BUG();
 
        /* prepare sense request for this command */
        ide_prep_sense(drive, rq);
index 6a1de21..6951811 100644 (file)
@@ -184,14 +184,7 @@ static ide_startstop_t ide_do_rw_disk(ide_drive_t *drive, struct request *rq,
        ide_hwif_t *hwif = drive->hwif;
 
        BUG_ON(drive->dev_flags & IDE_DFLAG_BLOCKED);
-
-       if (!blk_fs_request(rq)) {
-               blk_dump_rq_flags(rq, "ide_do_rw_disk - bad command");
-               if (rq->errors == 0)
-                       rq->errors = -EIO;
-               ide_complete_rq(drive, -EIO, ide_rq_bytes(rq));
-               return ide_stopped;
-       }
+       BUG_ON(!blk_fs_request(rq));
 
        ledtrig_ide_activity();
 
index 800c83a..8b3f204 100644 (file)
@@ -269,10 +269,8 @@ static ide_startstop_t ide_floppy_do_request(ide_drive_t *drive,
        } else if (blk_pc_request(rq)) {
                pc = &floppy->queued_pc;
                idefloppy_blockpc_cmd(floppy, pc, rq);
-       } else {
-               blk_dump_rq_flags(rq, PFX "unsupported command in queue");
-               goto out_end;
-       }
+       } else
+               BUG();
 
        ide_prep_sense(drive, rq);
 
index 3a3f10f..013dc59 100644 (file)
@@ -586,15 +586,7 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
        debug_log(DBG_SENSE, "sector: %llu, nr_sectors: %u\n"
                  (unsigned long long)blk_rq_pos(rq), blk_rq_sectors(rq));
 
-       if (!(blk_special_request(rq) || blk_sense_request(rq))) {
-               /* We do not support buffer cache originated requests. */
-               printk(KERN_NOTICE "ide-tape: %s: Unsupported request in "
-                       "request queue (%d)\n", drive->name, rq->cmd_type);
-               if (blk_fs_request(rq) == 0 && rq->errors == 0)
-                       rq->errors = -EIO;
-               ide_complete_rq(drive, -EIO, ide_rq_bytes(rq));
-               return ide_stopped;
-       }
+       BUG_ON(!(blk_special_request(rq) || blk_sense_request(rq)));
 
        /* Retry a failed packet command */
        if (drive->failed_pc && drive->pc->c[0] == REQUEST_SENSE) {