summaryrefslogtreecommitdiff
path: root/fs/squashfs
diff options
context:
space:
mode:
authorPhillip Lougher <phillip@lougher.demon.co.uk>2009-05-13 02:59:26 +0100
committerPhillip Lougher <phillip@lougher.demon.co.uk>2009-05-13 02:59:26 +0100
commitfffb47b80e8bb3f171ef02b90b1ae22c63983979 (patch)
tree0acc4268092856c30ed4640b42f3223593eda12f /fs/squashfs
parenta37b06d589f2c687a38d07569f4ef97c650fde39 (diff)
downloadlinux-stable-fffb47b80e8bb3f171ef02b90b1ae22c63983979.tar.gz
linux-stable-fffb47b80e8bb3f171ef02b90b1ae22c63983979.tar.bz2
linux-stable-fffb47b80e8bb3f171ef02b90b1ae22c63983979.zip
Squashfs: check page size is not larger than the filesystem block size
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>
Diffstat (limited to 'fs/squashfs')
-rw-r--r--fs/squashfs/super.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c
index ffa6edcd2d0c..0adc624c956f 100644
--- a/fs/squashfs/super.c
+++ b/fs/squashfs/super.c
@@ -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;