From: Luis Henriques <luis.henriques@canonical.com>
To: Ben Hutchings <ben@decadent.org.uk>
Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
akpm@linux-foundation.org,
Linus Torvalds <torvalds@linux-foundation.org>,
kernel test robot <ying.huang@linux.intel.com>,
Michal Hocko <mhocko@suse.com>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Subject: Re: [PATCH 3.2 47/70] vmstat: allocate vmstat_wq before it is used
Date: Mon, 18 Jan 2016 22:26:39 +0000 [thread overview]
Message-ID: <20160118222639.GC21074@charon.olymp> (raw)
In-Reply-To: <lsq.1453087115.851866182@decadent.org.uk>
On Mon, Jan 18, 2016 at 03:18:35AM +0000, Ben Hutchings wrote:
> 3.2.76-rc1 review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: Michal Hocko <mhocko@suse.com>
>
> commit 751e5f5c753e8d447bcf89f9e96b9616ac081628 upstream.
>
> kernel test robot has reported the following crash:
>
> BUG: unable to handle kernel NULL pointer dereference at 00000100
> IP: [<c1074df6>] __queue_work+0x26/0x390
> *pdpt = 0000000000000000 *pde = f000ff53f000ff53 *pde = f000ff53f000ff53
> Oops: 0000 [#1] PREEMPT PREEMPT SMP SMP
> CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 4.4.0-rc4-00139-g373ccbe #1
> Workqueue: events vmstat_shepherd
> task: cb684600 ti: cb7ba000 task.ti: cb7ba000
> EIP: 0060:[<c1074df6>] EFLAGS: 00010046 CPU: 0
> EIP is at __queue_work+0x26/0x390
> EAX: 00000046 EBX: cbb37800 ECX: cbb37800 EDX: 00000000
> ESI: 00000000 EDI: 00000000 EBP: cb7bbe68 ESP: cb7bbe38
> DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
> CR0: 8005003b CR2: 00000100 CR3: 01fd5000 CR4: 000006b0
> Stack:
> Call Trace:
> __queue_delayed_work+0xa1/0x160
> queue_delayed_work_on+0x36/0x60
> vmstat_shepherd+0xad/0xf0
> process_one_work+0x1aa/0x4c0
> worker_thread+0x41/0x440
> kthread+0xb0/0xd0
> ret_from_kernel_thread+0x21/0x40
>
> The reason is that start_shepherd_timer schedules the shepherd work item
> which uses vmstat_wq (vmstat_shepherd) before setup_vmstat allocates
> that workqueue so if the further initialization takes more than HZ we
> might end up scheduling on a NULL vmstat_wq. This is really unlikely
> but not impossible.
>
> Fixes: 373ccbe59270 ("mm, vmstat: allow WQ concurrency to discover memory reclaim doesn't make any progress")
> Reported-by: kernel test robot <ying.huang@linux.intel.com>
> Signed-off-by: Michal Hocko <mhocko@suse.com>
> Tested-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> [bwh: Backported to 3.2: This precise race condition doesn't exist, but there
> is a similar potential race with CPU hotplug. So move the alloc_workqueue()
> above register_cpu_notifier().]
FWIW, this looks correct to me and I'm queuing a similar fix for the
3.16 kernel as the race is similar.
Cheers,
--
Luís
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> mm/vmstat.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1203,9 +1203,10 @@ static int __init setup_vmstat(void)
> #ifdef CONFIG_SMP
> int cpu;
>
> + vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
> +
> register_cpu_notifier(&vmstat_notifier);
>
> - vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
> for_each_online_cpu(cpu)
> start_cpu_timer(cpu);
> #endif
>
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Luis Henriques <luis.henriques@canonical.com>
To: Ben Hutchings <ben@decadent.org.uk>
Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
akpm@linux-foundation.org,
Linus Torvalds <torvalds@linux-foundation.org>,
kernel test robot <ying.huang@linux.intel.com>,
Michal Hocko <mhocko@suse.com>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Subject: Re: [PATCH 3.2 47/70] vmstat: allocate vmstat_wq before it is used
Date: Mon, 18 Jan 2016 22:26:39 +0000 [thread overview]
Message-ID: <20160118222639.GC21074@charon.olymp> (raw)
In-Reply-To: <lsq.1453087115.851866182@decadent.org.uk>
On Mon, Jan 18, 2016 at 03:18:35AM +0000, Ben Hutchings wrote:
> 3.2.76-rc1 review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: Michal Hocko <mhocko@suse.com>
>
> commit 751e5f5c753e8d447bcf89f9e96b9616ac081628 upstream.
>
> kernel test robot has reported the following crash:
>
> BUG: unable to handle kernel NULL pointer dereference at 00000100
> IP: [<c1074df6>] __queue_work+0x26/0x390
> *pdpt = 0000000000000000 *pde = f000ff53f000ff53 *pde = f000ff53f000ff53
> Oops: 0000 [#1] PREEMPT PREEMPT SMP SMP
> CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 4.4.0-rc4-00139-g373ccbe #1
> Workqueue: events vmstat_shepherd
> task: cb684600 ti: cb7ba000 task.ti: cb7ba000
> EIP: 0060:[<c1074df6>] EFLAGS: 00010046 CPU: 0
> EIP is at __queue_work+0x26/0x390
> EAX: 00000046 EBX: cbb37800 ECX: cbb37800 EDX: 00000000
> ESI: 00000000 EDI: 00000000 EBP: cb7bbe68 ESP: cb7bbe38
> DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
> CR0: 8005003b CR2: 00000100 CR3: 01fd5000 CR4: 000006b0
> Stack:
> Call Trace:
> __queue_delayed_work+0xa1/0x160
> queue_delayed_work_on+0x36/0x60
> vmstat_shepherd+0xad/0xf0
> process_one_work+0x1aa/0x4c0
> worker_thread+0x41/0x440
> kthread+0xb0/0xd0
> ret_from_kernel_thread+0x21/0x40
>
> The reason is that start_shepherd_timer schedules the shepherd work item
> which uses vmstat_wq (vmstat_shepherd) before setup_vmstat allocates
> that workqueue so if the further initialization takes more than HZ we
> might end up scheduling on a NULL vmstat_wq. This is really unlikely
> but not impossible.
>
> Fixes: 373ccbe59270 ("mm, vmstat: allow WQ concurrency to discover memory reclaim doesn't make any progress")
> Reported-by: kernel test robot <ying.huang@linux.intel.com>
> Signed-off-by: Michal Hocko <mhocko@suse.com>
> Tested-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> [bwh: Backported to 3.2: This precise race condition doesn't exist, but there
> is a similar potential race with CPU hotplug. So move the alloc_workqueue()
> above register_cpu_notifier().]
FWIW, this looks correct to me and I'm queuing a similar fix for the
3.16 kernel as the race is similar.
Cheers,
--
Lu�s
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> mm/vmstat.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1203,9 +1203,10 @@ static int __init setup_vmstat(void)
> #ifdef CONFIG_SMP
> int cpu;
>
> + vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
> +
> register_cpu_notifier(&vmstat_notifier);
>
> - vmstat_wq = alloc_workqueue("vmstat", WQ_FREEZABLE|WQ_MEM_RECLAIM, 0);
> for_each_online_cpu(cpu)
> start_cpu_timer(cpu);
> #endif
>
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-01-18 22:26 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-18 3:18 [PATCH 3.2 00/70] 3.2.76-rc1 review Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 22/70] xen-netback: use RING_COPY_REQUEST() throughout Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 35/70] ocfs2: fix BUG when calculate new backup super Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 04/70] crypto: skcipher - Copy iv from desc even for 0-len walks Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 61/70] i2c: i801: Add device ID for Intel Wildcat Point PCH Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 19/70] s390/dis: Fix handling of format specifiers Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 58/70] i2c: i801: Add Device IDs for Intel Wildcat Point-LP PCH Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 15/70] spi: fix parent-device reference leak Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 12/70] sh_eth: fix TX buffer byte-swapping Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 25/70] xen/pciback: Return error on XEN_PCI_OP_enable_msi when device has MSI or MSI-X enabled Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 48/70] ahci: Add Device IDs for Intel Wellsburg PCH Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 30/70] USB: ipaq.c: fix a timeout loop Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 37/70] MIPS: Fix restart of indirect syscalls Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 13/70] mISDN: fix a loop count Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 18/70] ftrace/scripts: Have recordmcount copy the object file Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 59/70] i2c: i801: enable Intel BayTrail SMBUS Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 64/70] i2c: i801: Add DeviceIDs for SunrisePoint LP Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 45/70] Revert "net: add length argument to skb_copy_and_csum_datagram_iovec" Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 50/70] ahci: Remove Device ID for Intel Sunrise Point PCH Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 03/70] video: fbdev: fsl: Fix kernel crash when diu_ops is not implemented Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 27/70] xen/pciback: Do not install an IRQ handler for MSI interrupts Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 55/70] i2c: i801: SMBus patch for Intel Avoton DeviceIDs Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 57/70] i2c: i801: SMBus patch for Intel Coleto Creek DeviceIDs Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 33/70] parisc: Fix syscall restarts Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 23/70] xen-blkback: only read request operation from shared ring once Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 70/70] HID: dragonrise: fix HID Descriptor for 0x0006 PID Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 54/70] ahci: Order SATA device IDs for codename Lewisburg Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 28/70] xen/pciback: For XEN_PCI_OP_disable_msi[|x] only disable if device has MSI(X) enabled Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 42/70] net: possible use after free in dst_release Ben Hutchings
2016-01-18 3:49 ` Francesco Ruggeri
2016-01-18 11:50 ` Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 01/70] sctp: start t5 timer only when peer rwnd is 0 and local state is SHUTDOWN_PENDING Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 34/70] ipv6/addrlabel: fix ip6addrlbl_get() Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 20/70] xen: Add RING_COPY_REQUEST() Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 56/70] i2c: i801: Add Device IDs for Intel Wellsburg PCH Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 32/70] KEYS: Fix race between read and revoke Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 05/70] rfkill: copy the name into the rfkill struct Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 62/70] i2c: i801: Add PCI ID for Intel Braswell Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 11/70] ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest DragonFly Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 47/70] vmstat: allocate vmstat_wq before it is used Ben Hutchings
2016-01-18 22:26 ` Luis Henriques [this message]
2016-01-18 22:26 ` Luis Henriques
2016-01-18 3:18 ` [PATCH 3.2 44/70] kvm: x86: only channel 0 of the i8254 is linked to the HPET Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 07/70] ses: fix additional element traversal bug Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 53/70] ahci: Add Device ID for Intel Sunrise Point PCH Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 10/70] ALSA: tlv: add DECLARE_TLV_DB_RANGE() Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 08/70] tty: Fix GPF in flush_to_ldisc() Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 67/70] i2c: i801: Document Intel DNV and Broxton Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 63/70] i2c: i801: Add Device IDs for Intel Sunrise Point PCH Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 21/70] xen-netback: don't use last request to determine minimum Tx credit Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 14/70] ser_gigaset: fix deallocation of platform device structure Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 17/70] net: fix warnings in 'make htmldocs' by moving macro definition out of field declaration Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 16/70] scripts: recordmcount: break hardlinks Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 38/70] drm/radeon: fix hotplug race at startup Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 60/70] i2c: i801: Fix the alignment of the device table Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 31/70] USB: fix invalid memory access in hub_activate() Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 02/70] ipv6: sctp: fix lockdep splat in sctp_v6_get_dst() Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 09/70] ALSA: tlv: compute TLV_*_ITEM lengths automatically Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 41/70] ftrace/scripts: Fix incorrect use of sprintf in recordmcount Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 29/70] xen/pciback: Don't allow MSI-X ops if PCI_COMMAND_MEMORY is not set Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 26/70] xen/pciback: Return error on XEN_PCI_OP_enable_msix when device has MSI or MSI-X enabled Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 36/70] mm/memory_hotplug.c: check for missing sections in test_pages_in_a_zone() Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 51/70] ahci: Add Marvell 88se91a2 device id Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 69/70] cdrom: Random writing support for BD-RE media Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 66/70] i2c: i801: Add support for Intel Broxton Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 68/70] i2c: i801: add Intel Lewisburg device IDs Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 52/70] ahci: add new Intel " Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 40/70] genirq: Prevent chip buslock deadlock Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 65/70] i2c: i801: Add support for Intel DNV Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 43/70] KVM: x86: Reload pit counters for all channels when restoring state Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 46/70] udp: properly support MSG_PEEK with truncated buffers Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 39/70] net/core: revert "net: fix __netdev_update_features return.." and add comment Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 24/70] xen/pciback: Save xen_pci_op commands before processing it Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 06/70] ses: Fix problems with simple enclosures Ben Hutchings
2016-01-18 3:18 ` [PATCH 3.2 49/70] ahci: Add JMicron 362 device IDs Ben Hutchings
2016-01-18 3:45 ` [PATCH 3.2 00/70] 3.2.76-rc1 review Ben Hutchings
2016-01-18 9:12 ` Guenter Roeck
2016-01-18 11:50 ` Ben Hutchings
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=20160118222639.GC21074@charon.olymp \
--to=luis.henriques@canonical.com \
--cc=akpm@linux-foundation.org \
--cc=ben@decadent.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=mhocko@suse.com \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=ying.huang@linux.intel.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.