]> git.hungrycats.org Git - linux/commitdiff
[PATCH] range checking in rd_open()
authorAndrew Morton <akpm@digeo.com>
Fri, 20 Jun 2003 15:12:41 +0000 (08:12 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Fri, 20 Jun 2003 15:12:41 +0000 (08:12 -0700)
If you open /dev/ram7 when the kernel is configured for 4 ramdisks, things
blow up.  Teach rd_open() to check that the minor is in range.

drivers/block/rd.c

index 0509a67c2eb80a522972e875dc730bc563aeb2cf..bbfc4eaa39273f3ed53a7c1c1d050f18e223326c 100644 (file)
@@ -269,7 +269,10 @@ static struct backing_dev_info rd_backing_dev_info = {
 
 static int rd_open(struct inode * inode, struct file * filp)
 {
-       int unit = minor(inode->i_rdev);
+       unsigned unit = minor(inode->i_rdev);
+
+       if (unit >= NUM_RAMDISKS)
+               return -ENODEV;
 
        /*
         * Immunize device against invalidate_buffers() and prune_icache().