[JAUNTY SRU] UBUNTU: SAUCE: added memory barrier to prevent a reference counter leak.
Manoj Iyer
manoj.iyer at canonical.com
Thu Jul 23 19:23:39 UTC 2009
SRU JUSTIFICATION
IMPACT: disk corruption due to a concurrent h_refcounter update which
produced a reference counter leak, and later error from ext3
FIX: launchpad bug #209346, is caused by atleast three known factors.
1. File system inconsistency
2. Hardware problems
3. Misplaced memory barrier
As noted by a contributer to this bug, the Red Hat errata suggests a fix
to the memory barrier issue, which this patch addresses. This patch fixes
only one of the reasons users are seeing data corruption on 64bit Jaunty
systems, and does not address the other two known reasons.
TEST: This patch was reported to work for one(3) of the 3 causes of disk
corruption.
The following changes since commit
80a926a9ba2b651ddd717c3ed4f6429b6bb4020b:
Matthew Garrett (1):
UBUNTU: SAUCE: ACPI: Populate DIDL before registering ACPI video
device on Intel
are available in the git repository at:
git://kernel.ubuntu.com/manjo/ubuntu-jaunty.git lp209346
Manoj Iyer (1):
UBUNTU: SAUCE: added memory barrier to prevent a reference counter
leak.
fs/buffer.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
>From 7b75d3934b7641f74d42e007a2da52d06f4248c0 Mon Sep 17 00:00:00 2001
From: Manoj Iyer <manoj.iyer at canonical.com>
Date: Thu, 23 Jul 2009 13:59:20 -0500
Subject: [PATCH] UBUNTU: SAUCE: added memory barrier to prevent a reference counter leak.
OriginalLocation: http://rhn.redhat.com/errata/RHSA-2009-0331.html
BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/209346
launchpad bug #209346, is caused by atleast three known factors.
1. File system inconsistency
2. Hardware problems
3. Misplaced memory barrier
As noted by a contributer to this bug, the Red Hat errata suggests a fix to
the memory barrier issue, which this patch addresses. This patch fixes only
one of the reasons users are seeing data corruption on 64bit Jaunty systems,
and does not address the other two known reasons.
Signed-off-by: Manoj Iyer <manoj.iyer at canonical.com>
---
fs/buffer.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/fs/buffer.c b/fs/buffer.c
index 7e16a78..ea2a654 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -76,6 +76,7 @@ EXPORT_SYMBOL(__lock_buffer);
void unlock_buffer(struct buffer_head *bh)
{
+ smp_mb__before_clear_bit();
clear_bit_unlock(BH_Lock, &bh->b_state);
smp_mb__after_clear_bit();
wake_up_bit(&bh->b_state, BH_Lock);
--
1.6.3.3
Cheers
--- manjo
More information about the kernel-team
mailing list