summaryrefslogtreecommitdiff
path: root/kernels/linux-libre-grsec
diff options
context:
space:
mode:
Diffstat (limited to 'kernels/linux-libre-grsec')
-rwxr-xr-xkernels/linux-libre-grsec/PKGBUILD26
-rw-r--r--kernels/linux-libre-grsec/irq_cfg_pointer-3.6.6.patch16
-rwxr-xr-xkernels/linux-libre-grsec/linux-libre-grsec.install2
-rw-r--r--kernels/linux-libre-grsec/module-init-wait-3.6.patch77
-rw-r--r--kernels/linux-libre-grsec/module-symbol-waiting-3.6.patch66
5 files changed, 7 insertions, 180 deletions
diff --git a/kernels/linux-libre-grsec/PKGBUILD b/kernels/linux-libre-grsec/PKGBUILD
index d586f77f7..873b96b91 100755
--- a/kernels/linux-libre-grsec/PKGBUILD
+++ b/kernels/linux-libre-grsec/PKGBUILD
@@ -9,12 +9,12 @@
pkgbase=linux-libre-grsec # Build stock -LIBRE-GRSEC kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.6
-_sublevel=8
+_sublevel=9
_grsecver=2.9.1
-_timestamp=201212011309
+_timestamp=201212061820
pkgver=${_basekernel}.${_sublevel}
pkgrel=3
-_lxopkgver=${_basekernel}.8 # nearly always the same as pkgver
+_lxopkgver=${_basekernel}.9 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -31,13 +31,10 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'Kbuild.platforms'
'boot-logo.patch'
'change-default-console-loglevel.patch'
- #'module-symbol-waiting-3.6.patch'
- #'module-init-wait-3.6.patch'
- #'irq_cfg_pointer-3.6.6.patch'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.bz2")
md5sums=('a2312edd0265b5b07bd4b50afae2b380'
- '3f4d630f49a12079598a3601dd2adb24'
- '404f94ed95983191b673f3462715bd64'
+ '2127e118d09154c7a44dd2dfed2cfecd'
+ '5a7ac3d736bda40cd459865a13263e7d'
'9b4ec887671d9242eba16be5cba4f9dc'
'55695d7853abe483f4db189877fd5e36'
'5f66bed97a5c37e48eb2f71b2d354b9a'
@@ -45,10 +42,7 @@ md5sums=('a2312edd0265b5b07bd4b50afae2b380'
'8267264d9a8966e57fdacd1fa1fc65c4'
'86d3c12bdb77173617d2b9e170522ee0'
'9d3c56a4b999c8bfbd4018089a62f662'
- #'670931649c60fcb3ef2e0119ed532bd4'
- #'8a71abc4224f575008f974a099b5cf6f'
- #'4909a0271af4e5f373136b382826717f'
- 'acc79d1934fe9710acd9039dcd4e8b30')
+ '2f3ae0624acb4a4b12ea2c008b964bd2')
if [ "$CARCH" != "mips64el" ]; then
# Don't use the Loongson-specific patches on non-mips64el arches.
unset source[${#source[@]}-1]
@@ -77,14 +71,6 @@ build() {
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
-# # fix module initialisation
-# # https://bugs.archlinux.org/task/32122
-# patch -Np1 -i "${srcdir}/module-symbol-waiting-3.6.patch"
-# patch -Np1 -i "${srcdir}/module-init-wait-3.6.patch"
-
-# # fix FS#32615 - Check for valid irq_cfg pointer in smp_irq_move_cleanup_interrupt
-# patch -Np1 -i "${srcdir}/irq_cfg_pointer-3.6.6.patch"
-
if [ "$CARCH" == "mips64el" ]; then
sed -i "s|^EXTRAVERSION.*|EXTRAVERSION =-libre-grsec|" Makefile
sed -r "s|^( SUBLEVEL = ).*|\1$_sublevel|" \
diff --git a/kernels/linux-libre-grsec/irq_cfg_pointer-3.6.6.patch b/kernels/linux-libre-grsec/irq_cfg_pointer-3.6.6.patch
deleted file mode 100644
index 32583c0ac..000000000
--- a/kernels/linux-libre-grsec/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-grsec/linux-libre-grsec.install b/kernels/linux-libre-grsec/linux-libre-grsec.install
index 4c65c9783..640b32e25 100755
--- a/kernels/linux-libre-grsec/linux-libre-grsec.install
+++ b/kernels/linux-libre-grsec/linux-libre-grsec.install
@@ -2,7 +2,7 @@
# arg 2: the old package version
KERNEL_NAME=-grsec
-KERNEL_VERSION=3.6.7-4-LIBRE-GRSEC
+KERNEL_VERSION=3.6.9-3-LIBRE-GRSEC
_fix_permissions() {
/usr/bin/paxutils
diff --git a/kernels/linux-libre-grsec/module-init-wait-3.6.patch b/kernels/linux-libre-grsec/module-init-wait-3.6.patch
deleted file mode 100644
index 1bcfd2491..000000000
--- a/kernels/linux-libre-grsec/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-grsec/module-symbol-waiting-3.6.patch b/kernels/linux-libre-grsec/module-symbol-waiting-3.6.patch
deleted file mode 100644
index b87a38ff5..000000000
--- a/kernels/linux-libre-grsec/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;
- }