mkfs.f2fs: fix to calculate left space of checkpoint page correctly
authorChao Yu <chao2.yu@samsung.com>
Mon, 14 Dec 2015 10:06:59 +0000 (18:06 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 14 Dec 2015 18:11:48 +0000 (10:11 -0800)
We reserved one segment for NAT region at least, so when formatting
fs, calculated maximum size of left space in CP page should be:
CHECKSUM_OFFSET - sizeof(struct f2fs_checkpoint) + 1 - 64 (size of
reserved NAT bitmap).

Fix the incorrect calculated size to avoid potential overflow bug here.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
mkfs/f2fs_format.c

index c4b17de..a2f33f9 100644 (file)
@@ -220,7 +220,7 @@ static int f2fs_prepare_super_block(void)
         * When sit is too large, we should expand cp area. It requires more pages for cp.
         */
        if (max_sit_bitmap_size >
-                       (CHECKSUM_OFFSET - sizeof(struct f2fs_checkpoint) + 65)) {
+                       (CHECKSUM_OFFSET - sizeof(struct f2fs_checkpoint) + 1 - 64)) {
                max_nat_bitmap_size = CHECKSUM_OFFSET - sizeof(struct f2fs_checkpoint) + 1;
                set_sb(cp_payload, F2FS_BLK_ALIGN(max_sit_bitmap_size));
        } else {