mirror of
https://git.yoctoproject.org/poky
synced 2026-09-12 06:49:32 +02:00
linux-moblin: Switch to 2.6.29.1
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
69
meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.30-fix-async.patch
vendored
Normal file
69
meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.30-fix-async.patch
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
Gitweb: http://git.kernel.org/linus/d6de2c80e9d758d2e36c21699117db6178c0f517
|
||||
Commit: d6de2c80e9d758d2e36c21699117db6178c0f517
|
||||
Parent: 7933a3cfba017330ebb25f9820cb25ec9cdd67cc
|
||||
Author: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
AuthorDate: Fri Apr 10 12:17:41 2009 -0700
|
||||
Committer: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
CommitDate: Sat Apr 11 12:44:49 2009 -0700
|
||||
|
||||
async: Fix module loading async-work regression
|
||||
|
||||
Several drivers use asynchronous work to do device discovery, and we
|
||||
synchronize with them in the compiled-in case before we actually try to
|
||||
mount root filesystems etc.
|
||||
|
||||
However, when compiled as modules, that synchronization is missing - the
|
||||
module loading completes, but the driver hasn't actually finished
|
||||
probing for devices, and that means that any user mode that expects to
|
||||
use the devices after the 'insmod' is now potentially broken.
|
||||
|
||||
We already saw one case of a similar issue in the ACPI battery code,
|
||||
where the kernel itself expected the module to be all done, and unmapped
|
||||
the init memory - but the async device discovery was still running.
|
||||
That got hacked around by just removing the "__init" (see commit
|
||||
5d38258ec026921a7b266f4047ebeaa75db358e5 "ACPI battery: fix async boot
|
||||
oops"), but the real fix is to just make the module loading wait for all
|
||||
async work to be completed.
|
||||
|
||||
It will slow down module loading, but since common devices should be
|
||||
built in anyway, and since the bug is really annoying and hard to handle
|
||||
from user space (and caused several S3 resume regressions), the simple
|
||||
fix to wait is the right one.
|
||||
|
||||
This fixes at least
|
||||
|
||||
http://bugzilla.kernel.org/show_bug.cgi?id=13063
|
||||
|
||||
but probably a few other bugzilla entries too (12936, for example), and
|
||||
is confirmed to fix Rafael's storage driver breakage after resume bug
|
||||
report (no bugzilla entry).
|
||||
|
||||
We should also be able to now revert that ACPI battery fix.
|
||||
|
||||
Reported-and-tested-by: Rafael J. Wysocki <rjw@suse.com>
|
||||
Tested-by: Heinz Diehl <htd@fancy-poultry.org>
|
||||
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
kernel/module.c | 3 +++
|
||||
1 files changed, 3 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index 05f014e..e797812 100644
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -2388,6 +2388,9 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
|
||||
blocking_notifier_call_chain(&module_notify_list,
|
||||
MODULE_STATE_LIVE, mod);
|
||||
|
||||
+ /* We need to finish all async code before the module init sequence is done */
|
||||
+ async_synchronize_full();
|
||||
+
|
||||
mutex_lock(&module_mutex);
|
||||
/* Drop initial reference. */
|
||||
module_put(mod);
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
Reference in New Issue
Block a user