android_kernel_google_msm/drivers/block
Weijie Yang afd7fc2303 UPSTREAM: zram: correct offset usage in zram_bio_discard
(cherry-pick from commit 38515c7339)

We want to skip the physical block(PAGE_SIZE) which is partially covered
by the discard bio, so we check the remaining size and subtract it if
there is a need to goto the next physical block.

The current offset usage in zram_bio_discard is incorrect, it will cause
its upper filesystem breakdown.  Consider the following scenario:

On some architecture or config, PAGE_SIZE is 64K for example, filesystem
is set up on zram disk without PAGE_SIZE aligned, a discard bio leads to a
offset = 4K and size=72K, normally, it should not really discard any
physical block as it partially cover two physical blocks.  However, with
the current offset usage, it will discard the second physical block and
free its memory, which will cause filesystem breakdown.

This patch corrects the offset usage in zram_bio_discard.

Bug: 25951511

Change-Id: I139d6adfd7ee390ce7cd421c7ea5f9a9e3f285ba
Signed-off-by: Weijie Yang <weijie.yang@samsung.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Acked-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Bob Liu <bob.liu@oracle.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-01-01 21:26:58 +03:00
..
aoe aoe: reserve enough headroom on skbs 2013-04-05 10:04:40 -07:00
drbd drbd: merge_bvec_fn: properly remap bvm->bi_bdev 2015-04-14 17:33:41 +08:00
mtip32xx mtip32xx: release the semaphore on an error path 2012-05-11 16:42:14 +02:00
paride paride/pcd: fix bool verbose module parameter. 2012-01-13 09:32:26 +10:30
xen-blkback xen-blkback: only read request operation from shared ring once 2016-10-26 23:15:39 +08:00
zram UPSTREAM: zram: correct offset usage in zram_bio_discard 2018-01-01 21:26:58 +03:00
amiflop.c
ataflop.c
brd.c block: fix a probe argument to blk_register_region 2013-11-29 10:50:36 -08:00
cciss.c cciss: fix info leak in cciss_ioctl32_passthru() 2013-10-13 15:42:47 -07:00
cciss.h
cciss_cmd.h
cciss_scsi.c cciss: fix handling of protocol error 2012-10-02 10:29:50 -07:00
cciss_scsi.h
cpqarray.c cpqarray: fix info leak in ida_locked_ioctl() 2013-10-13 15:42:47 -07:00
cpqarray.h
cryptoloop.c
DAC960.c dac960: Remove unused variables from DAC960_CreateProcEntries() 2012-05-11 16:42:14 +02:00
DAC960.h
floppy.c floppy: properly handle failure on add_disk loop 2014-06-07 16:02:06 -07:00
hd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
ida_cmd.h
ida_ioctl.h
Kconfig zram: promote zram from staging 2018-01-01 21:26:45 +03:00
loop.c loop: fix crash if blk_alloc_queue fails 2013-12-04 10:50:28 -08:00
Makefile zram: promote zram from staging 2018-01-01 21:26:45 +03:00
mg_disk.c
nbd.c nbd: fix possible memory leak 2015-06-19 11:40:28 +08:00
nvme.c NVMe: Fix uninitialized iod compiler warning 2012-12-03 11:46:36 -08:00
osdblk.c
pktcdvd.c block: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:16 +08:00
ps3disk.c
ps3vram.c
rbd.c rbd: do not allow remove of mounted-on image 2013-01-17 08:51:21 -08:00
rbd_types.h rbd: small changes 2012-03-22 10:47:50 -05:00
smart1,2.h
sunvdc.c sunvdc: Fix off-by-one in generic_request(). 2013-02-28 06:59:02 -08:00
swim.c
swim3.c
swim_asm.S
sx8.c block, sx8: fix pointer math issue getting fw version 2012-03-03 19:44:39 +01:00
ub.c usb/ub: deprecate & schedule for removal the "Low Performance USB Block" driver 2012-03-16 13:30:10 -07:00
umem.c umem: fix up unplugging 2012-07-16 09:04:08 -07:00
umem.h
virtio_blk.c virtio-blk: Don't free ida when disk is in use 2014-06-11 12:04:18 -07:00
xd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
xd.h
xen-blkfront.c xen-blkfront: check for null drvdata in blkback_changed (XenbusStateClosing) 2016-04-27 18:55:27 +08:00
xsysace.c
z2ram.c