ANDROID: squashfs: Fix signed division issue
authorDaniel Rosenberg <drosen@google.com>
Wed, 21 Jun 2017 00:05:33 +0000 (17:05 -0700)
committerAmit Pundir <amit.pundir@linaro.org>
Mon, 10 Jul 2017 10:57:52 +0000 (16:27 +0530)
The value here can change depending on the type that PAGE_SIZE
has on a given architecture. To avoid the ensuing signed and
unsigned division conversions, we shift instead using PAGE_SHIFT

Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 35257858
Change-Id: I132cae93abea39390c3f0f91a4b2e026e97ed4c7

fs/squashfs/block.c

index 2eb66decc5abc4f38475cb666634cbe96568982d..4e3e0863f5eae1567ecf7fac876f38a2b567e40c 100644 (file)
@@ -211,8 +211,8 @@ static int bh_is_optional(struct squashfs_read_request *req, int idx)
        int start_idx, end_idx;
        struct squashfs_sb_info *msblk = req->sb->s_fs_info;
 
-       start_idx = (idx * msblk->devblksize - req->offset) / PAGE_CACHE_SIZE;
-       end_idx = ((idx + 1) * msblk->devblksize - req->offset + 1) / PAGE_CACHE_SIZE;
+       start_idx = (idx * msblk->devblksize - req->offset) >> PAGE_SHIFT;
+       end_idx = ((idx + 1) * msblk->devblksize - req->offset + 1) >> PAGE_SHIFT;
        if (start_idx >= req->output->pages)
                return 1;
        if (start_idx < 0)