Patch "EDAC: Fix workqueues poll period resetting" has been added to the 4.6-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
EDAC: Fix workqueues poll period resetting
to the 4.6-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
edac-fix-workqueues-poll-period-resetting.patch
and it can be found in the queue-4.6 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
fbedcaf43fba35677c01a4ae51e6f79edf4049baMon Sep 17 00:00:00 2001
From: Nicholas Krause <[email protected]>
Date: Thu, 19 May 2016 18:45:58 -0400
Subject: EDAC: Fix workqueues poll period resetting
From: Nicholas Krause <[email protected]>
commit fbedcaf43fba35677c01a4ae51e6f79edf4049ba upstream.
After the workqueue cleanup, we're registering workqueues based on the presence of an ->edac_check function. When that is the case, we're setting OP_RUNNING_POLL. But we forgot to check that in edac_mc_reset_delay_period(), leading to:
BUG: unable to handle kernel paging request at 0000000000015d10
IP: [ .. ] queued_spin_lock_slowpath
PGD 3ffcc8067 PUD 3ffc56067 PMD 0
Oops: 0002 [#1] SMP
Modules linked in: ...
CPU: 1 PID: 2792 Comm: edactest Not tainted 4.6.0-dirty #1
Hardware name: HP ProLiant MicroServer, BIOS O41 10/01/2013
Stack:
Call Trace:
? _raw_spin_lock_irqsave
? lock_timer_base.isra.34
? del_timer
? try_to_grab_pending
? mod_delayed_work_on
? edac_mc_reset_delay_period
? edac_set_poll_msec
? param_attr_store
? module_attr_store
? kernfs_fop_write
? __vfs_write
? __vfs_read
? __alloc_fd
? vfs_write
? SyS_write
? entry_SYSCALL_64_fastpath
Code:
RIP [ .. ] queued_spin_lock_slowpath
RSP <>
CR2: 0000000000015d10
---[ end trace 3f286bc71cca15d1 ]---
Kernel panic - not syncing: Fatal exceptionFix it.
--- drivers/edac/edac_mc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/edac/edac_mc.c +2 -1
@@ -565,7 +565,8 @@ void edac_mc_reset_delay_period(unsignedlist_for_each (item, &mc_devices) { mci = list_entry(item, struct mem_ctl_info, link); -edac_mod_work (&mci->work, value); +if (mci->op_state ==OP_RUNNING_POLL ) +edac_mod_work (&mci->work, value); }mutex_unlock (&mem_ctls_mutex); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.6/edac-fix-workqueues-poll-period-resetting.patch