From 039288bbb2c17e7e401729fde39c9401e7ea7670 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 20 Aug 2007 23:29:11 -0700 Subject: [PATCH] one more 2.6.22 patch added --- .../jffs2-locking-regression-fix.patch | 39 +++++++++++++++++++ queue-2.6.22/series | 1 + 2 files changed, 40 insertions(+) create mode 100644 queue-2.6.22/jffs2-locking-regression-fix.patch diff --git a/queue-2.6.22/jffs2-locking-regression-fix.patch b/queue-2.6.22/jffs2-locking-regression-fix.patch new file mode 100644 index 00000000000..2ce9eb754be --- /dev/null +++ b/queue-2.6.22/jffs2-locking-regression-fix.patch @@ -0,0 +1,39 @@ +From stable-bounces@linux.kernel.org Mon Aug 20 03:05:48 2007 +From: David Woodhouse +Date: Mon, 20 Aug 2007 11:05:29 +0100 +Subject: JFFS2 locking regression fix. +To: torvalds@linux-foundation.org, stable@kernel.org +Cc: Josh Boyer , Joakim.Tjernlund@transmode.se, giulio fedel +Message-ID: <1187604329.3137.45.camel@shinybook.infradead.org> + + +Commit a491486a2087ac3dfc00efb4f838c8d684afaf54 introduced a locking +problem in JFFS2 -- we up() the alloc_sem when we weren't previously +holding it. This leads to all kinds of fun behaviour later. + +There was a _reason_ for the + if (1 /* alternative path needs testing */ || +which the above-mentioned commit removed :) + +Discovered and debugged by Giulio Fedel + +Signed-off-by: David Woodhouse +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/jffs2/write.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/fs/jffs2/write.c ++++ b/fs/jffs2/write.c +@@ -553,6 +553,9 @@ int jffs2_do_unlink(struct jffs2_sb_info + struct jffs2_full_dirent **prev = &dir_f->dents; + uint32_t nhash = full_name_hash(name, namelen); + ++ /* We don't actually want to reserve any space, but we do ++ want to be holding the alloc_sem when we write to flash */ ++ down(&c->alloc_sem); + down(&dir_f->sem); + + while ((*prev) && (*prev)->nhash <= nhash) { diff --git a/queue-2.6.22/series b/queue-2.6.22/series index cd9a5d2b090..4fd561e4236 100644 --- a/queue-2.6.22/series +++ b/queue-2.6.22/series @@ -17,3 +17,4 @@ x86_64-check-for-.cfi_rel_offset-in-cfi-probe.patch x86_64-change-pmds-invocation-to-single-macro.patch i386-handle-p6s-without-performance-counters-in-nmi-watchdog.patch i386-fix-double-fault-handler.patch +jffs2-locking-regression-fix.patch -- 2.47.3