diff options
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.30-fix-async.patch')
-rw-r--r-- | meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.30-fix-async.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.30-fix-async.patch b/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.30-fix-async.patch new file mode 100644 index 0000000000..a489339cbd --- /dev/null +++ b/meta-moblin/packages/linux/linux-moblin-2.6.29.1/linux-2.6.30-fix-async.patch @@ -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 |