Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1626244
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 4.9 46/69] zram: do not use copy_page with non-page aligned address |
| Date | 2017-04-19 17:00 +0200 |
| Message-ID | <txZfk-4Gn-17@gated-at.bofh.it> (permalink) |
| References | <txZ5D-4CC-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Minchan Kim <minchan@kernel.org>
commit d72e9a7a93e4f8e9e52491921d99e0c8aa89eb4e upstream.
The copy_page is optimized memcpy for page-alinged address. If it is
used with non-page aligned address, it can corrupt memory which means
system corruption. With zram, it can happen with
1. 64K architecture
2. partial IO
3. slub debug
Partial IO need to allocate a page and zram allocates it via kmalloc.
With slub debug, kmalloc(PAGE_SIZE) doesn't return page-size aligned
address. And finally, copy_page(mem, cmem) corrupts memory.
So, this patch changes it to memcpy.
Actuaully, we don't need to change zram_bvec_write part because zsmalloc
returns page-aligned address in case of PAGE_SIZE class but it's not
good to rely on the internal of zsmalloc.
Note:
When this patch is merged to stable, clear_page should be fixed, too.
Unfortunately, recent zram removes it by "same page merge" feature so
it's hard to backport this patch to -stable tree.
I will handle it when I receive the mail from stable tree maintainer to
merge this patch to backport.
Fixes: 42e99bd ("zram: optimize memory operations with clear_page()/copy_page()")
Link: http://lkml.kernel.org/r/1492042622-12074-2-git-send-email-minchan@kernel.org
Signed-off-by: Minchan Kim <minchan@kernel.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/block/zram/zram_drv.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -582,13 +582,13 @@ static int zram_decompress_page(struct z
if (!handle || zram_test_flag(meta, index, ZRAM_ZERO)) {
bit_spin_unlock(ZRAM_ACCESS, &meta->table[index].value);
- clear_page(mem);
+ memset(mem, 0, PAGE_SIZE);
return 0;
}
cmem = zs_map_object(meta->mem_pool, handle, ZS_MM_RO);
if (size == PAGE_SIZE) {
- copy_page(mem, cmem);
+ memcpy(mem, cmem, PAGE_SIZE);
} else {
struct zcomp_strm *zstrm = zcomp_stream_get(zram->comp);
@@ -780,7 +780,7 @@ compress_again:
if ((clen == PAGE_SIZE) && !is_partial_io(bvec)) {
src = kmap_atomic(page);
- copy_page(cmem, src);
+ memcpy(cmem, src, PAGE_SIZE);
kunmap_atomic(src);
} else {
memcpy(cmem, src, clen);
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 4.9 00/69] 4.9.24-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 48/69] crypto: algif_aead - Fix bogus request dereference in completion function Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 53/69] ext4: fix inode checksum calculation problem if i_extra_size is small Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 58/69] ASoC: Intel: select DW_DMAC_CORE since its mandatory Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 36/69] libnvdimm: fix blk free space accounting Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 64/69] [media] dvb-usb: dont use stack for firmware load Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 13/69] CIFS: store results of cifs_reopen_file to avoid infinite wait Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 52/69] [media] dvb-usb-v2: avoid use-after-free Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 29/69] scsi: sd: Consider max_xfer_blocks if opt_xfer_blocks is unusable Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 50/69] parisc: Fix get_user() for 64-bit value on 32-bit kernel Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 46/69] zram: do not use copy_page with non-page aligned address Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 56/69] nbd: use loff_t for blocksize and nbd_set_size args Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 43/69] char: lack of bool string made CONFIG_DEVPORT always on Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 41/69] irqchip/irq-imx-gpcv2: Fix spinlock initialization Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 03/69] tcmu: Fix wrongly calculating of the base_command_size Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 47/69] ftrace: Fix function pid filter on instances Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 57/69] nbd: fix 64-bit division Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 37/69] libnvdimm: fix reconfig_mutex, mmap_sem, and jbd2_handle lockdep splat Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 44/69] Revert "MIPS: Lantiq: Fix cascaded IRQ setup" Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 55/69] drm/nouveau/disp/mcp7x: disable dptmds workaround Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 49/69] crypto: ahash - Fix EINPROGRESS notification callback Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 45/69] kvm: fix page struct leak in handle_vmon Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 54/69] mm: memcontrol: use special workqueue for creating per-memcg caches Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 05/69] thp: fix MADV_DONTNEED vs. MADV_FREE race Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 30/69] scsi: qla2xxx: Add fix to read correct register value for ISP82xx. Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 39/69] pwm: rockchip: State of PWM clock should synchronize with PWM enabled state Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 24/69] efi/libstub: Skip GOP with PIXEL_BLT_ONLY format Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 04/69] tcmu: Skip Data-Out blocks before gathering Data-In buffer for BIDI case Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 08/69] orangefs: free superblock when mount fails Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 16/69] x86/efi: Dont try to reserve runtime regions Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 10/69] drm/nouveau/mmu/nv4a: use nv04 mmu rather than the nv44 one Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 21/69] acpi, nfit, libnvdimm: fix interleave set cookie calculation (64-bit comparison) Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 15/69] perf/x86: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 17/69] x86/signals: Fix lower/upper bound reporting in compat siginfo Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 19/69] x86/vdso: Ensure vdso32_enabled gets set to valid values only Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 26/69] iscsi-target: Fix TMR reference leak during session shutdown Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 20/69] x86/vdso: Plug race between mapping and ELF header setup Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 22/69] ACPI / scan: Set the visited flag for all enumerated devices Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 07/69] zsmalloc: expand class bit Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 06/69] thp: fix MADV_DONTNEED vs clear soft dirty race Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 28/69] scsi: sr: Sanity check returned mode data Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 09/69] drm/nouveau/mpeg: mthd returns true on success now Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 38/69] can: ifi: use correct register to read rx status Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 12/69] CIFS: reconnect thread reschedule itself Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 25/69] efi/fb: Avoid reconfiguration of BAR that covers the framebuffer Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 Re: [PATCH 4.9 00/69] 4.9.24-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2017-04-19 22:40 +0200 Re: [PATCH 4.9 00/69] 4.9.24-stable review Guenter Roeck <linux@roeck-us.net> - 2017-04-20 01:30 +0200
csiph-web