aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinchan Kim <minchan@kernel.org>2017-04-13 14:56:35 -0700
committerAmit Pundir <amit.pundir@linaro.org>2018-10-04 14:16:10 +0530
commitb200c92fd30858359ddb494e14f6140c4d85c660 (patch)
treed2719357b1bf5a74d8395b4570ace0487862d226
parent7188698948edc229ba9c0b17082f753a575a2148 (diff)
downloadlinaro-android-b200c92fd30858359ddb494e14f6140c4d85c660.tar.gz
UPSTREAM: zram: fix operator precedence to get offset
In zram_rw_page, the logic to get offset is wrong by operator precedence (i.e., "<<" is higher than "&"). With wrong offset, zram can corrupt the user's data. This patch fixes it. Fixes: 8c7f01025 ("zram: implement rw_page operation of zram") Link: http://lkml.kernel.org/r/1492042622-12074-1-git-send-email-minchan@kernel.org Signed-off-by: Minchan Kim <minchan@kernel.org> Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> (cherry picked from commit 4ca82dabc9fbf7bc5322aa54d802cb3cb7b125c5) Signed-off-by: Peter Kalauskas <peskal@google.com> Bug: 112488418 Change-Id: I6abb2aef381463976aea1fa8e7f5ca07367190e9 Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
-rw-r--r--drivers/block/zram/zram_drv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 28a0e5169756..b064c0b3c4c5 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -924,7 +924,7 @@ static int zram_rw_page(struct block_device *bdev, sector_t sector,
}
index = sector >> SECTORS_PER_PAGE_SHIFT;
- offset = sector & (SECTORS_PER_PAGE - 1) << SECTOR_SHIFT;
+ offset = (sector & (SECTORS_PER_PAGE - 1)) << SECTOR_SHIFT;
bv.bv_page = page;
bv.bv_len = PAGE_SIZE;