From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Vlastimil Babka <vbabka@suse.cz>,
syzbot+b19c2dc2c990ea657a71@syzkaller.appspotmail.com,
Alexander Potapenko <glider@google.com>,
Dmitry Vyukov <dvyukov@google.com>,
Andrea Arcangeli <aarcange@redhat.com>,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Michal Hocko <mhocko@suse.com>,
David Rientjes <rientjes@google.com>,
Yisheng Xie <xieyisheng1@huawei.com>,
zhong jiang <zhongjiang@huawei.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: [PATCH 5.0 50/52] mm, mempolicy: fix uninit memory access
Date: Tue, 26 Mar 2019 15:30:37 +0900 [thread overview]
Message-ID: <20190326042703.653914631@linuxfoundation.org> (raw)
In-Reply-To: <20190326042700.963224437@linuxfoundation.org>
5.0-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vlastimil Babka <vbabka@suse.cz>
commit 2e25644e8da4ed3a27e7b8315aaae74660be72dc upstream.
Syzbot with KMSAN reports (excerpt):
==================================================================
BUG: KMSAN: uninit-value in mpol_rebind_policy mm/mempolicy.c:353 [inline]
BUG: KMSAN: uninit-value in mpol_rebind_mm+0x249/0x370 mm/mempolicy.c:384
CPU: 1 PID: 17420 Comm: syz-executor4 Not tainted 4.20.0-rc7+ #15
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x173/0x1d0 lib/dump_stack.c:113
kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
__msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:295
mpol_rebind_policy mm/mempolicy.c:353 [inline]
mpol_rebind_mm+0x249/0x370 mm/mempolicy.c:384
update_tasks_nodemask+0x608/0xca0 kernel/cgroup/cpuset.c:1120
update_nodemasks_hier kernel/cgroup/cpuset.c:1185 [inline]
update_nodemask kernel/cgroup/cpuset.c:1253 [inline]
cpuset_write_resmask+0x2a98/0x34b0 kernel/cgroup/cpuset.c:1728
...
Uninit was created at:
kmsan_save_stack_with_flags mm/kmsan/kmsan.c:204 [inline]
kmsan_internal_poison_shadow+0x92/0x150 mm/kmsan/kmsan.c:158
kmsan_kmalloc+0xa6/0x130 mm/kmsan/kmsan_hooks.c:176
kmem_cache_alloc+0x572/0xb90 mm/slub.c:2777
mpol_new mm/mempolicy.c:276 [inline]
do_mbind mm/mempolicy.c:1180 [inline]
kernel_mbind+0x8a7/0x31a0 mm/mempolicy.c:1347
__do_sys_mbind mm/mempolicy.c:1354 [inline]
As it's difficult to report where exactly the uninit value resides in
the mempolicy object, we have to guess a bit. mm/mempolicy.c:353
contains this part of mpol_rebind_policy():
if (!mpol_store_user_nodemask(pol) &&
nodes_equal(pol->w.cpuset_mems_allowed, *newmask))
"mpol_store_user_nodemask(pol)" is testing pol->flags, which I couldn't
ever see being uninitialized after leaving mpol_new(). So I'll guess
it's actually about accessing pol->w.cpuset_mems_allowed on line 354,
but still part of statement starting on line 353.
For w.cpuset_mems_allowed to be not initialized, and the nodes_equal()
reachable for a mempolicy where mpol_set_nodemask() is called in
do_mbind(), it seems the only possibility is a MPOL_PREFERRED policy
with empty set of nodes, i.e. MPOL_LOCAL equivalent, with MPOL_F_LOCAL
flag. Let's exclude such policies from the nodes_equal() check. Note
the uninit access should be benign anyway, as rebinding this kind of
policy is always a no-op. Therefore no actual need for stable
inclusion.
Link: http://lkml.kernel.org/r/a71997c3-e8ae-a787-d5ce-3db05768b27c@suse.cz
Link: http://lkml.kernel.org/r/73da3e9c-cc84-509e-17d9-0c434bb9967d@suse.cz
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Reported-by: syzbot+b19c2dc2c990ea657a71@syzkaller.appspotmail.com
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Yisheng Xie <xieyisheng1@huawei.com>
Cc: zhong jiang <zhongjiang@huawei.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>
---
mm/mempolicy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -350,7 +350,7 @@ static void mpol_rebind_policy(struct me
{
if (!pol)
return;
- if (!mpol_store_user_nodemask(pol) &&
+ if (!mpol_store_user_nodemask(pol) && !(pol->flags & MPOL_F_LOCAL) &&
nodes_equal(pol->w.cpuset_mems_allowed, *newmask))
return;
next prev parent reply other threads:[~2019-03-26 6:40 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-26 6:29 [PATCH 5.0 00/52] 5.0.5-stable review Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 01/52] ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 02/52] ALSA: firewire-motu: use version field of unit directory to identify model Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 03/52] mmc: pxamci: fix enum type confusion Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 04/52] mmc: alcor: fix DMA reads Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 05/52] mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages" Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 06/52] mmc: renesas_sdhi: limit block count to 16 bit for old revisions Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 07/52] drm/amdgpu: fix invalid use of change_bit Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 08/52] drm/vmwgfx: Dont double-free the mode stored in par->set_mode Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 09/52] drm/vmwgfx: Return 0 when gmrid::get_node runs out of IDs Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 10/52] iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 11/52] iommu/iova: Fix tracking of recently failed iova address Greg Kroah-Hartman
2019-03-26 6:29 ` [PATCH 5.0 12/52] libceph: wait for latest osdmap in ceph_monc_blacklist_add() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 13/52] udf: Fix crash on IO error during truncate Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 14/52] mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 15/52] MIPS: Ensure ELF appended dtb is relocated Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 16/52] MIPS: Fix kernel crash for R6 in jump label branch function Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 17/52] powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 18/52] powerpc/security: Fix spectre_v2 reporting Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 19/52] net/mlx5: Fix DCT creation bad flow Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 20/52] scsi: core: Avoid that a kernel warning appears during system resume Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 21/52] scsi: qla2xxx: Fix FC-AL connection target discovery Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 22/52] scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 23/52] scsi: ibmvscsi: Fix empty event pool access during host removal Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 24/52] futex: Ensure that futex address is aligned in handle_futex_death() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 25/52] cifs: allow guest mounts to work for smb3.11 Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 26/52] perf probe: Fix getting the kernel map Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 27/52] objtool: Move objtool_file struct off the stack Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 28/52] irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 29/52] clocksource/drivers/riscv: Fix clocksource mask Greg Kroah-Hartman
2019-03-26 6:30 ` Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 30/52] SMB3: Fix SMB3.1.1 guest mounts to Samba Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 31/52] ALSA: hda - Dont trigger jackpoll_work in azx_resume Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 32/52] ALSA: ac97: Fix of-node refcount unbalance Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 33/52] ext4: fix NULL pointer dereference while journal is aborted Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 34/52] ext4: fix data corruption caused by unaligned direct AIO Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 35/52] ext4: brelse all indirect buffer in ext4_ind_remove_space() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 36/52] media: v4l2-ctrls.c/uvc: zero v4l2_event Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 37/52] Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 38/52] Bluetooth: Fix decrementing reference count twice in releasing socket Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 39/52] Bluetooth: hci_ldisc: Initialize hci_dev before open() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 40/52] Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in hci_uart_set_proto() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 41/52] drm/vkms: Fix flush_work() without INIT_WORK() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 42/52] RDMA/cma: Rollback source IP address if failing to acquire device Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 43/52] f2fs: fix to avoid deadlock of atomic file operations Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 44/52] aio: simplify - and fix - fget/fput for io_submit() Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 45/52] netfilter: ebtables: remove BUGPRINT messages Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 46/52] loop: access lo_backing_file only when the loop device is Lo_bound Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 47/52] x86/unwind: Handle NULL pointer calls better in frame unwinder Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 48/52] x86/unwind: Add hardcoded ORC entry for NULL Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 49/52] locking/lockdep: Add debug_locks check in __lock_downgrade() Greg Kroah-Hartman
2019-03-26 6:30 ` Greg Kroah-Hartman [this message]
2019-03-26 6:30 ` [PATCH 5.0 51/52] ALSA: hda - Record the current power state before suspend/resume calls Greg Kroah-Hartman
2019-03-26 6:30 ` [PATCH 5.0 52/52] ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec Greg Kroah-Hartman
2019-03-26 15:20 ` [PATCH 5.0 00/52] 5.0.5-stable review Jon Hunter
2019-03-26 15:20 ` Jon Hunter
2019-03-27 0:56 ` Greg Kroah-Hartman
2019-03-26 17:50 ` Guenter Roeck
2019-03-27 0:59 ` Greg Kroah-Hartman
2019-03-26 23:18 ` shuah
2019-03-27 0:55 ` Greg Kroah-Hartman
2019-03-27 4:06 ` Naresh Kamboju
2019-03-27 5:06 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190326042703.653914631@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=dvyukov@google.com \
--cc=glider@google.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhocko@suse.com \
--cc=rientjes@google.com \
--cc=stable@vger.kernel.org \
--cc=syzbot+b19c2dc2c990ea657a71@syzkaller.appspotmail.com \
--cc=torvalds@linux-foundation.org \
--cc=vbabka@suse.cz \
--cc=xieyisheng1@huawei.com \
--cc=zhongjiang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.