diff options
author | Phillip Lougher <phillip@lougher.demon.co.uk> | 2009-05-13 02:59:26 +0100 |
---|---|---|
committer | Phillip Lougher <phillip@lougher.demon.co.uk> | 2009-05-13 02:59:26 +0100 |
commit | fffb47b80e8bb3f171ef02b90b1ae22c63983979 (patch) | |
tree | 0acc4268092856c30ed4640b42f3223593eda12f | |
parent | a37b06d589f2c687a38d07569f4ef97c650fde39 (diff) |
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>
-rw-r--r-- | fs/squashfs/super.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index ffa6edcd2d0..0adc624c956 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; |