Squashfs: check page size is not larger than the filesystem block size
authorPhillip Lougher <phillip@lougher.demon.co.uk>
Wed, 13 May 2009 01:59:26 +0000 (02:59 +0100)
committerPhillip Lougher <phillip@lougher.demon.co.uk>
Wed, 13 May 2009 01:59:26 +0000 (02:59 +0100)
Normally the block size (by default 128K) will be larger than the
page size, unless a non-standard block size has been specified in
Mksquashfs, and the page size is larger than 4K.

Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
fs/squashfs/super.c

index ffa6edcd2d0cd30822490df1b2d9ebcde4b44867..0adc624c956f7b5994a2ad2a9add6dbd97fc4f76 100644 (file)
@@ -157,6 +157,16 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent)
        if (msblk->block_size > SQUASHFS_FILE_MAX_SIZE)
                goto failed_mount;
 
+       /*
+        * Check the system page size is not larger than the filesystem
+        * block size (by default 128K).  This is currently not supported.
+        */
+       if (PAGE_CACHE_SIZE > msblk->block_size) {
+               ERROR("Page size > filesystem block size (%d).  This is "
+                       "currently not supported!\n", msblk->block_size);
+               goto failed_mount;
+       }
+
        msblk->block_log = le16_to_cpu(sblk->block_log);
        if (msblk->block_log > SQUASHFS_FILE_MAX_LOG)
                goto failed_mount;