Messages in this thread Patch in this message | | | Date | Sun, 16 May 1999 16:53:20 +0200 (MET DST) | From | Andries.Brouwer@cwi ... | Subject | [PATCH] ide_open is too permissive |
| |
The SCSI code (sd_open) returns -ENXIO if one tries to open a nonexistent partition of an exiting disk. Good. But the IDE code just succeeds in the corresponding situation. This means that attempts to mount a nonexistent partition yield nonsense like
May 16 14:20:03 nata kernel: 03:0c: rw=0, want=1, limit=0 May 16 14:20:03 nata kernel: attempt to access beyond end of device May 16 14:20:03 nata kernel: hda<: bad access: block=0, count=1 May 16 14:20:03 nata kernel: end_request: I/O error, dev 03:0c (hda), sector 0
in the syslog. The patch below makes ide_open fail in this situation. (Maybe the surrounding `if (drive->media == ide_disk)' is too cautious - I have not thought about what other IDE devices there are, and what meaning the minor could have for them.)
Andries
--- ide.c~ Sat May 15 21:13:29 1999 +++ ide.c Sun May 16 14:37:23 1999 @@ -1672,7 +1672,12 @@ int rc; if ((drive = get_info_ptr(inode->i_rdev)) == NULL) - return -ENXIO; + return -ENXIO; /* no such drive */ + if (drive->media == ide_disk) { + int minor = (MINOR(inode->i_rdev) & PARTN_MASK); + if (drive->part[minor].nr_sects == 0) + return -ENXIO; /* no such partition */ + } MOD_INC_USE_COUNT; if (drive->driver == NULL) ide_init_module(IDE_DRIVER_MODULE); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |