[PATCH] ide_open is too permissive

Andries.Brouwer@cwi.nl
Sun, 16 May 1999 16:53:20 +0200 (MET DST)


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/