diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-12 16:32:36 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-03-12 16:32:36 -0700 |
commit | 188de5ec56dc27e0556ad1bc41ec6bd84418d7bf (patch) | |
tree | 3b177cbf31053926bf37d4e300312ee8c3cb8f12 | |
parent | 5216a3c6d10c891015474fbf7126c92a1845bf74 (diff) | |
parent | 363911d027d1de1c6df79eb3f487f5476b9619f4 (diff) | |
download | kernel_samsung_smdk4412-188de5ec56dc27e0556ad1bc41ec6bd84418d7bf.zip kernel_samsung_smdk4412-188de5ec56dc27e0556ad1bc41ec6bd84418d7bf.tar.gz kernel_samsung_smdk4412-188de5ec56dc27e0556ad1bc41ec6bd84418d7bf.tar.bz2 |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus
* git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus:
Squashfs: Valid filesystems are flagged as bad by the corrupted fs patch
-rw-r--r-- | fs/squashfs/block.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/fs/squashfs/block.c b/fs/squashfs/block.c index 321728f..2a79603 100644 --- a/fs/squashfs/block.c +++ b/fs/squashfs/block.c @@ -184,15 +184,7 @@ int squashfs_read_data(struct super_block *sb, void **buffer, u64 index, offset = 0; } - if (msblk->stream.avail_out == 0) { - if (page == pages) { - ERROR("zlib_inflate tried to " - "decompress too much data, " - "expected %d bytes. Zlib " - "data probably corrupt\n", - srclength); - goto release_mutex; - } + if (msblk->stream.avail_out == 0 && page < pages) { msblk->stream.next_out = buffer[page++]; msblk->stream.avail_out = PAGE_CACHE_SIZE; } @@ -209,25 +201,20 @@ int squashfs_read_data(struct super_block *sb, void **buffer, u64 index, zlib_init = 1; } - zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH); + zlib_err = zlib_inflate(&msblk->stream, Z_SYNC_FLUSH); if (msblk->stream.avail_in == 0 && k < b) put_bh(bh[k++]); } while (zlib_err == Z_OK); if (zlib_err != Z_STREAM_END) { - ERROR("zlib_inflate returned unexpected result" - " 0x%x, srclength %d, avail_in %d," - " avail_out %d\n", zlib_err, srclength, - msblk->stream.avail_in, - msblk->stream.avail_out); + ERROR("zlib_inflate error, data probably corrupt\n"); goto release_mutex; } zlib_err = zlib_inflateEnd(&msblk->stream); if (zlib_err != Z_OK) { - ERROR("zlib_inflateEnd returned unexpected result 0x%x," - " srclength %d\n", zlib_err, srclength); + ERROR("zlib_inflate error, data probably corrupt\n"); goto release_mutex; } length = msblk->stream.total_out; |