From: Borislav Petkov <bp@amd64.org>
To: Tobias Karnat <tobias.karnat@googlemail.com>
Cc: Borislav Petkov <bp@alien8.de>,
"linux-edac@vger.kernel.org" <linux-edac@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: edac_core: crashes on shutdown
Date: Thu, 2 Dec 2010 18:06:10 +0100 [thread overview]
Message-ID: <20101202170610.GE27263@aftab> (raw)
In-Reply-To: <1291306872.3898.7.camel@Tobias-Karnat>
On Thu, Dec 02, 2010 at 11:21:12AM -0500, Tobias Karnat wrote:
> Am Donnerstag, den 02.12.2010, 16:21 +0100 schrieb Borislav Petkov:
> > Well, thanks for the photos. I don't have an idea what might cause this
> > workqueue corruption I'm seeing, all reg/unreg paths look ok. The only
> > change that came in between .35 and .36.1 I can think of being relevant
> > is 00740c58541b6087d78418cebca1fcb86dc6077d. You could try backing that
> > one out to see whether it fixes the issue.
>
> Yes, reverting this fixed the issue!
>
> But why?
Dang, I know why. This whole ->op_state fumbling is pretty fragile and
needs de-fragilizing :o).
Please try out the one below after re-reverting
00740c58541b6087d78418cebca1fcb86dc6077d (i.e., ontop of .36.1).
Thanks.
--
From: Borislav Petkov <borislav.petkov@amd.com>
Date: Thu, 2 Dec 2010 17:48:35 +0100
Subject: [PATCH] EDAC: Fix workqueue-related crashes
00740c58541b6087d78418cebca1fcb86dc6077d changed edac_core to
un-/register a workqueue item only if a lowlevel driver supplies a
polling routine. Normally, when we remove a polling low-level driver,
we go and teardown the workqueue and cancel all the queued work.
However, the workqueue unreg happens based on the ->op_state setting,
and edac_mc_del_mc() sets this to OP_OFFLINE _before_ we cancel the work
item, leading to NULL ptr oops on the workqueue list.
Fix it by putting the unreg stuff in proper order.
Cc: <stable@kernel.org> #36.x
Reported-by: Tobias Karnat <tobias.karnat@googlemail.com>
LKML-Reference: <1291201307.3029.21.camel@Tobias-Karnat>
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
---
drivers/edac/edac_mc.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index 6b21e25..6d2e34d 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -578,14 +578,16 @@ struct mem_ctl_info *edac_mc_del_mc(struct device *dev)
return NULL;
}
- /* marking MCI offline */
- mci->op_state = OP_OFFLINE;
-
del_mc_from_global_list(mci);
mutex_unlock(&mem_ctls_mutex);
- /* flush workq processes and remove sysfs */
+ /* flush workq processes */
edac_mc_workq_teardown(mci);
+
+ /* marking MCI offline */
+ mci->op_state = OP_OFFLINE;
+
+ /* remove from sysfs */
edac_remove_sysfs_mci_device(mci);
edac_printk(KERN_INFO, EDAC_MC,
--
1.7.3.1.50.g1e633
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
General Managers: Alberto Bozzo, Andrew Bowd
Registration: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
next prev parent reply other threads:[~2010-12-02 17:06 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-01 11:01 edac_core: crashes on shutdown Tobias Karnat
2010-12-01 12:39 ` Borislav Petkov
2010-12-01 13:24 ` Tobias Karnat
2010-12-01 14:33 ` Borislav Petkov
2010-12-01 17:46 ` Tobias Karnat
2010-12-01 19:35 ` Borislav Petkov
2010-12-02 9:03 ` Tobias Karnat
2010-12-02 14:51 ` Florian Mickler
2010-12-02 14:52 ` Florian Mickler
2010-12-02 15:21 ` Borislav Petkov
2010-12-02 16:21 ` Tobias Karnat
2010-12-02 17:02 ` Florian Mickler
2010-12-02 17:07 ` Borislav Petkov
2010-12-02 17:06 ` Borislav Petkov [this message]
2010-12-02 18:05 ` Tobias Karnat
2010-12-02 18:37 ` Borislav Petkov
2010-12-02 22:34 ` Tobias Karnat
2010-12-03 11:58 ` Borislav Petkov
2010-12-03 21:23 ` Doug Thompson
2010-12-02 18:14 ` Florian Mickler
2010-12-02 18:51 ` Borislav Petkov
2010-12-02 19:54 ` Florian Mickler
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=20101202170610.GE27263@aftab \
--to=bp@amd64.org \
--cc=bp@alien8.de \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tobias.karnat@googlemail.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.