diff options
-rw-r--r-- | kernels/linux-libre-rt/fat-3.6.x.patch | 33 | ||||
-rw-r--r-- | kernels/linux-libre-rt/irq_cfg_pointer-3.6.6.patch | 16 | ||||
-rw-r--r-- | kernels/linux-libre-rt/module-init-wait-3.6.patch | 77 | ||||
-rw-r--r-- | kernels/linux-libre-rt/module-symbol-waiting-3.6.patch | 66 |
4 files changed, 0 insertions, 192 deletions
diff --git a/kernels/linux-libre-rt/fat-3.6.x.patch b/kernels/linux-libre-rt/fat-3.6.x.patch deleted file mode 100644 index d8deeb788..000000000 --- a/kernels/linux-libre-rt/fat-3.6.x.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Dave Reisner <dreisner@archlinux.org> -Date: Thu, 29 Nov 2012 03:18:52 +0000 (+1100) -Subject: fs/fat: strip "cp" prefix from codepage in display -X-Git-Tag: next-20121130~1^2~97 -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnext%2Flinux-next.git;a=commitdiff_plain;h=f15914873184cc3f2a8d590fa4f7e32ab0a8a405 - -fs/fat: strip "cp" prefix from codepage in display - -Option parsing code expects an unsigned integer for the codepage option, -but prefixes and stores this option with "cp" before passing to -load_nls(). This makes the displayed option in /proc an invalid one. -Strip the prefix when printing so that the displayed option is valid for -reuse. - -Signed-off-by: Dave Reisner <dreisner@archlinux.org> -Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> -Signed-off-by: Andrew Morton <akpm@linux-foundation.org> ---- - -diff --git a/fs/fat/inode.c b/fs/fat/inode.c -index 3b733a7..3580681 100644 ---- a/fs/fat/inode.c -+++ b/fs/fat/inode.c -@@ -726,7 +726,8 @@ static int fat_show_options(struct seq_file *m, struct dentry *root) - if (opts->allow_utime) - seq_printf(m, ",allow_utime=%04o", opts->allow_utime); - if (sbi->nls_disk) -- seq_printf(m, ",codepage=%s", sbi->nls_disk->charset); -+ /* strip "cp" prefix from displayed option */ -+ seq_printf(m, ",codepage=%s", &sbi->nls_disk->charset[2]); - if (isvfat) { - if (sbi->nls_io) - seq_printf(m, ",iocharset=%s", sbi->nls_io->charset); diff --git a/kernels/linux-libre-rt/irq_cfg_pointer-3.6.6.patch b/kernels/linux-libre-rt/irq_cfg_pointer-3.6.6.patch deleted file mode 100644 index 32583c0ac..000000000 --- a/kernels/linux-libre-rt/irq_cfg_pointer-3.6.6.patch +++ /dev/null @@ -1,16 +0,0 @@ -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git;a=blobdiff_plain;f=arch%2Fx86%2Fkernel%2Fapic%2Fio_apic.c;h=1817fa911024f07151d3edf91bd350722c9f79f8;hp=c265593ec2cdc3df35fda1586aaf91514fab62fa;hb=94777fc51b3ad85ff9f705ddf7cdd0eb3bbad5a6;hpb=3e8fa263a97079c74880675c451587bb6899e661 - -diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c -index c265593..1817fa9 100644 ---- a/arch/x86/kernel/apic/io_apic.c -+++ b/arch/x86/kernel/apic/io_apic.c -@@ -2257,6 +2257,9 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void) - continue; - - cfg = irq_cfg(irq); -+ if (!cfg) -+ continue; -+ - raw_spin_lock(&desc->lock); - - /* diff --git a/kernels/linux-libre-rt/module-init-wait-3.6.patch b/kernels/linux-libre-rt/module-init-wait-3.6.patch deleted file mode 100644 index 1bcfd2491..000000000 --- a/kernels/linux-libre-rt/module-init-wait-3.6.patch +++ /dev/null @@ -1,77 +0,0 @@ -From: Rusty Russell <rusty@rustcorp.com.au> -Date: Fri, 28 Sep 2012 05:01:03 +0000 (+0930) -Subject: module: wait when loading a module which is currently initializing. -X-Git-Tag: v3.7-rc1~2^2~32 -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=9bb9c3be568346538 - -module: wait when loading a module which is currently initializing. - -The original module-init-tools module loader used a fnctl lock on the -.ko file to avoid attempts to simultaneously load a module. -Unfortunately, you can't get an exclusive fcntl lock on a read-only -fd, making this not work for read-only mounted filesystems. -module-init-tools has a hacky sleep-and-loop for this now. - -It's not that hard to wait in the kernel, and only return -EEXIST once -the first module has finished loading (or continue loading the module -if the first one failed to initialize for some reason). It's also -consistent with what we do for dependent modules which are still loading. - -Suggested-by: Lucas De Marchi <lucas.demarchi@profusion.mobi> -Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> ---- - -diff --git a/kernel/module.c b/kernel/module.c -index 63cf6e7..74bc195 100644 ---- a/kernel/module.c -+++ b/kernel/module.c -@@ -2845,6 +2845,20 @@ static int post_relocation(struct module *mod, const struct load_info *info) - return module_finalize(info->hdr, info->sechdrs, mod); - } - -+/* Is this module of this name done loading? No locks held. */ -+static bool finished_loading(const char *name) -+{ -+ struct module *mod; -+ bool ret; -+ -+ mutex_lock(&module_mutex); -+ mod = find_module(name); -+ ret = !mod || mod->state != MODULE_STATE_COMING; -+ mutex_unlock(&module_mutex); -+ -+ return ret; -+} -+ - /* Allocate and load the module: note that size of section 0 is always - zero, and we rely on this for optional sections. */ - static struct module *load_module(void __user *umod, -@@ -2852,7 +2866,7 @@ static struct module *load_module(void __user *umod, - const char __user *uargs) - { - struct load_info info = { NULL, }; -- struct module *mod; -+ struct module *mod, *old; - long err; - - pr_debug("load_module: umod=%p, len=%lu, uargs=%p\n", -@@ -2918,8 +2932,18 @@ static struct module *load_module(void __user *umod, - * function to insert in a way safe to concurrent readers. - * The mutex protects against concurrent writers. - */ -+again: - mutex_lock(&module_mutex); -- if (find_module(mod->name)) { -+ if ((old = find_module(mod->name)) != NULL) { -+ if (old->state == MODULE_STATE_COMING) { -+ /* Wait in case it fails to load. */ -+ mutex_unlock(&module_mutex); -+ err = wait_event_interruptible(module_wq, -+ finished_loading(mod->name)); -+ if (err) -+ goto free_arch_cleanup; -+ goto again; -+ } - err = -EEXIST; - goto unlock; - } diff --git a/kernels/linux-libre-rt/module-symbol-waiting-3.6.patch b/kernels/linux-libre-rt/module-symbol-waiting-3.6.patch deleted file mode 100644 index b87a38ff5..000000000 --- a/kernels/linux-libre-rt/module-symbol-waiting-3.6.patch +++ /dev/null @@ -1,66 +0,0 @@ -From: Rusty Russell <rusty@rustcorp.com.au> -Date: Fri, 28 Sep 2012 05:01:03 +0000 (+0930) -Subject: module: fix symbol waiting when module fails before init -X-Git-Tag: v3.7-rc1~2^2~33 -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=6f13909f4fe9652f1 - -module: fix symbol waiting when module fails before init - -We use resolve_symbol_wait(), which blocks if the module containing -the symbol is still loading. However: - -1) The module_wq we use is only woken after calling the modules' init - function, but there are other failure paths after the module is - placed in the linked list where we need to do the same thing. - -2) wake_up() only wakes one waiter, and our waitqueue is shared by all - modules, so we need to wake them all. - -3) wake_up_all() doesn't imply a memory barrier: I feel happier calling - it after we've grabbed and dropped the module_mutex, not just after - the state assignment. - -Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> ---- - -diff --git a/kernel/module.c b/kernel/module.c -index 7f2ee45f..63cf6e7 100644 ---- a/kernel/module.c -+++ b/kernel/module.c -@@ -2959,7 +2959,7 @@ static struct module *load_module(void __user *umod, - /* Unlink carefully: kallsyms could be walking list. */ - list_del_rcu(&mod->list); - module_bug_cleanup(mod); -- -+ wake_up_all(&module_wq); - ddebug: - dynamic_debug_remove(info.debug); - unlock: -@@ -3034,7 +3034,7 @@ SYSCALL_DEFINE3(init_module, void __user *, umod, - blocking_notifier_call_chain(&module_notify_list, - MODULE_STATE_GOING, mod); - free_module(mod); -- wake_up(&module_wq); -+ wake_up_all(&module_wq); - return ret; - } - if (ret > 0) { -@@ -3046,9 +3046,8 @@ SYSCALL_DEFINE3(init_module, void __user *, umod, - dump_stack(); - } - -- /* Now it's a first class citizen! Wake up anyone waiting for it. */ -+ /* Now it's a first class citizen! */ - mod->state = MODULE_STATE_LIVE; -- wake_up(&module_wq); - blocking_notifier_call_chain(&module_notify_list, - MODULE_STATE_LIVE, mod); - -@@ -3071,6 +3070,7 @@ SYSCALL_DEFINE3(init_module, void __user *, umod, - mod->init_ro_size = 0; - mod->init_text_size = 0; - mutex_unlock(&module_mutex); -+ wake_up_all(&module_wq); - - return 0; - } |