Home Home > GIT Browse > openSUSE-12.1
summaryrefslogtreecommitdiff
tag namerpm-2.6.16.60-0.35-dirty (1c6a0e55af675893075fc4eec521266e10b6f13a)
tag date2009-06-17 23:02:49 (GMT)
tagged byKernel Build Daemon <kbuild@suse.de>
tagged objectcommit aae8fc361f...
Released kernel-2.6.16.60-0.35 with the following manual change:
--- git/kernel-source/kernel-source.changes 2009-06-18 00:52:07.000000000 +0200 +++ package/kernel-source.changes 2009-02-12 10:21:30.000000000 +0100 @@ -1,4 +1,27 @@ ------------------------------------------------------------------- +Wed Feb 11 20:22:21 CET 2009 - gregkh@suse.de + +- bugfix for the bugfix for the bugfix: patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch: + KABI: hack for scm_work_list in struct task_struct. + +------------------------------------------------------------------- +Wed Feb 11 20:06:03 CET 2009 - gregkh@suse.de + +- bugfix for: patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch: + KABI: hack for scm_work_list in struct task_struct. + +------------------------------------------------------------------- +Tue Feb 10 06:06:50 CET 2009 - gregkh@suse.de + +- patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch: + net: Fix recursive descent in __scm_destroy() (CVE-2008-5029) + (bnc#442364). +- patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch: + KABI: hack for scm_work_list in struct task_struct. +- patches.fixes/kabi-turn-off-kabi-check-for-struct-scm_fp_list-change.patch: + KABI: turn off kabi check for struct scm_fp_list change. + +------------------------------------------------------------------- Fri Jan 16 15:12:26 CET 2009 - jkosina@suse.de - patches.fixes/nfs-cleanup_rpc_wakeup_fix: NFS: Fix Oops in diff -ruN -x CVS -x '*.changes' git/kernel-source/patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch package/patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch --- git/kernel-source/patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch 1970-01-01 01:00:00.000000000 +0100 +++ package/patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch 2009-02-12 10:19:50.000000000 +0100 @@ -0,0 +1,191 @@ +Date: Mon, 09 Feb 2009 20:53:59 -0800 +From: Greg Kroah-Hartman <gregkh@suse.de> +Subject: KABI: hack for scm_work_list in struct task_struct +Patch-mainline: never + +This KABI patch is needed due to the addition of the scm_work_list field to +struct task_struct in the security fix in +patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch + +The idea for this, and the majority of the patch came from a patch from Neil +Horman <nhorman@redhat.com> that did the same hack for RHEL5 in order to +address the kabi issue that the ia64 platform had with this change. + +This patch should be removed in SLE10 SP3 + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + fs/exec.c | 4 ++-- + include/linux/sched.h | 12 +++++++++++- + kernel/fork.c | 22 ++++++++++++++++++---- + net/core/scm.c | 8 ++++---- + 4 files changed, 35 insertions(+), 11 deletions(-) + +--- a/fs/exec.c ++++ b/fs/exec.c +@@ -1396,7 +1396,7 @@ static void zap_threads (struct mm_struc + { + struct task_struct *g, *p; + struct task_struct *tsk = current; +- struct completion *vfork_done = tsk->vfork_done; ++ struct completion *vfork_done = task_aux(tsk)->vfork_done; + int traced = 0; + + /* +@@ -1404,7 +1404,7 @@ static void zap_threads (struct mm_struc + * otherwise we can deadlock when we wait on each other + */ + if (vfork_done) { +- tsk->vfork_done = NULL; ++ task_aux(tsk)->vfork_done = NULL; + complete(vfork_done); + } + +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -763,6 +763,13 @@ static inline void prefetch_stack(struct + struct audit_context; /* See audit.c */ + struct mempolicy; + ++/* auxilliary task structure to avoid KABI breakage */ ++struct task_struct_aux { ++ struct completion *vfork_done; /* for vfork() [displaced from task_struct] */ ++ struct list_head *scm_work_list; /* displaced from task_struct for abi compat */ ++}; ++#define task_aux(tsk) ((tsk)->auxilliary) ++ + struct task_struct { + volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ + struct thread_info *thread_info; +@@ -833,7 +840,11 @@ struct task_struct { + /* PID/PID hash table linkage. */ + struct pid pids[PIDTYPE_MAX]; + ++#ifndef __GENKSYMS__ ++ struct task_struct_aux *auxilliary; /* KABI-resistant auxilliary task data */ ++#else + struct completion *vfork_done; /* for vfork() */ ++#endif + int __user *set_child_tid; /* CLONE_CHILD_SETTID */ + int __user *clear_child_tid; /* CLONE_CHILD_CLEARTID */ + +@@ -959,7 +970,6 @@ struct task_struct { + + /* TASK_UNMAPPED_BASE */ + unsigned long map_base; +- struct list_head *scm_work_list; + }; + + static inline pid_t process_group(struct task_struct *tsk) +--- a/kernel/fork.c ++++ b/kernel/fork.c +@@ -107,6 +107,7 @@ static kmem_cache_t *mm_cachep; + + void free_task(struct task_struct *tsk) + { ++ kfree(task_aux(tsk)); + free_thread_info(tsk->thread_info); + free_task_struct(tsk); + } +@@ -138,8 +139,11 @@ void __put_task_struct_cb(struct rcu_hea + } + EXPORT_SYMBOL(__put_task_struct_cb); + ++static struct task_struct_aux init_task_aux; ++ + void __init fork_init(unsigned long mempages) + { ++ task_aux(current) = &init_task_aux; + #ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR + #ifndef ARCH_MIN_TASKALIGN + #define ARCH_MIN_TASKALIGN L1_CACHE_BYTES +@@ -174,6 +178,7 @@ void __init fork_init(unsigned long memp + + static struct task_struct *dup_task_struct(struct task_struct *orig) + { ++ struct task_struct_aux *aux; + struct task_struct *tsk; + struct thread_info *ti; + +@@ -189,9 +194,18 @@ static struct task_struct *dup_task_stru + return NULL; + } + ++ aux = kmalloc(sizeof(*aux), GFP_KERNEL); ++ if (!aux) { ++ free_thread_info(ti); ++ free_task_struct(tsk); ++ return NULL; ++ } ++ + *tsk = *orig; ++ *aux = *task_aux(orig); + tsk->thread_info = ti; + setup_thread_stack(tsk, orig); ++ task_aux(tsk) = aux; + + /* One for us, one for whoever does the "release_task()" (usually parent) */ + atomic_set(&tsk->usage,2); +@@ -441,14 +455,14 @@ EXPORT_SYMBOL_GPL(get_task_mm); + */ + void mm_release(struct task_struct *tsk, struct mm_struct *mm) + { +- struct completion *vfork_done = tsk->vfork_done; ++ struct completion *vfork_done = task_aux(tsk)->vfork_done; + + /* Get rid of any cached register state */ + deactivate_mm(tsk, mm); + + /* notify parent sleeping on vfork() */ + if (vfork_done) { +- tsk->vfork_done = NULL; ++ task_aux(tsk)->vfork_done = NULL; + complete(vfork_done); + } + if (tsk->clear_child_tid && atomic_read(&mm->mm_users) > 1) { +@@ -1003,7 +1017,7 @@ static task_t *copy_process(unsigned lon + + INIT_LIST_HEAD(&p->children); + INIT_LIST_HEAD(&p->sibling); +- p->vfork_done = NULL; ++ task_aux(p)->vfork_done = NULL; + spin_lock_init(&p->alloc_lock); + spin_lock_init(&p->proc_lock); + +@@ -1350,7 +1364,7 @@ long do_fork(unsigned long clone_flags, + struct completion vfork; + + if (clone_flags & CLONE_VFORK) { +- p->vfork_done = &vfork; ++ task_aux(p)->vfork_done = &vfork; + init_completion(&vfork); + } + +--- a/net/core/scm.c ++++ b/net/core/scm.c +@@ -105,12 +105,12 @@ void __scm_destroy(struct scm_cookie *sc + + if (fpl) { + scm->fp = NULL; +- if (current->scm_work_list) { +- list_add_tail(&fpl->list, current->scm_work_list); ++ if (task_aux(current)->scm_work_list) { ++ list_add_tail(&fpl->list, task_aux(current)->scm_work_list); + } else { + LIST_HEAD(work_list); + +- current->scm_work_list = &work_list; ++ task_aux(current)->scm_work_list = &work_list; + + list_add(&fpl->list, &work_list); + while (!list_empty(&work_list)) { +@@ -122,7 +122,7 @@ void __scm_destroy(struct scm_cookie *sc + kfree(fpl); + } + +- current->scm_work_list = NULL; ++ task_aux(current)->scm_work_list = NULL; + } + } + } diff -ruN -x CVS -x '*.changes' git/kernel-source/patches.fixes/kabi-turn-off-kabi-check-for-struct-scm_fp_list-change.patch package/patches.fixes/kabi-turn-off-kabi-check-for-struct-scm_fp_list-change.patch --- git/kernel-source/patches.fixes/kabi-turn-off-kabi-check-for-struct-scm_fp_list-change.patch 1970-01-01 01:00:00.000000000 +0100 +++ package/patches.fixes/kabi-turn-off-kabi-check-for-struct-scm_fp_list-change.patch 2009-02-12 10:19:35.000000000 +0100 @@ -0,0 +1,29 @@ +Date: Mon, 09 Feb 2009 20:53:59 -0800 +From: Greg Kroah-Hartman <gregkh@suse.de> +Subject: KABI: turn off kabi check for struct scm_fp_list change +Patch-mainline: never + +This KABI patch is needed due to the addition of the list field to struct +scm_fp_list in the security fix in +patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch + +This patch should be removed in SLE10 SP3 + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + include/net/scm.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/include/net/scm.h ++++ b/include/net/scm.h +@@ -13,7 +13,9 @@ struct scm_fp_list + { + int count; + struct file *fp[SCM_MAX_FD]; ++#ifndef __GENKSYMS__ + struct list_head list; ++#endif + }; + + struct scm_cookie diff -ruN -x CVS -x '*.changes' git/kernel-source/patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch package/patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch --- git/kernel-source/patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch 2009-03-19 00:12:41.000000000 +0100 +++ package/patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch 2009-02-12 10:23:13.000000000 +0100 @@ -29,10 +29,10 @@ --- include/linux/list.h | 11 +++++++++++ - include/linux/sched.h | 3 +++ - include/net/scm.h | 7 +++++-- + include/linux/sched.h | 1 + + include/net/scm.h | 5 +++-- net/core/scm.c | 24 +++++++++++++++++++++--- - 4 files changed, 40 insertions(+), 5 deletions(-) + 4 files changed, 36 insertions(+), 5 deletions(-) --- a/include/linux/list.h +++ b/include/linux/list.h @@ -56,29 +56,25 @@ * @head: the head for your list. --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -959,6 +959,9 @@ struct task_struct { +@@ -959,6 +959,7 @@ struct task_struct { /* TASK_UNMAPPED_BASE */ unsigned long map_base; -+#ifndef __GENKSYMS__ + struct list_head *scm_work_list; -+#endif }; static inline pid_t process_group(struct task_struct *tsk) --- a/include/net/scm.h +++ b/include/net/scm.h -@@ -11,8 +11,11 @@ +@@ -11,8 +11,9 @@ struct scm_fp_list { - int count; - struct file *fp[SCM_MAX_FD]; -+#ifndef __GENKSYMS__ /* gotta love pointless api checks... */ -+ struct list_head list; -+#endif + int count; + struct file *fp[SCM_MAX_FD]; ++ struct list_head list; }; struct scm_cookie diff -ruN -x CVS -x '*.changes' git/kernel-source/series.conf package/series.conf --- git/kernel-source/series.conf 2009-06-18 00:52:03.000000000 +0200 +++ package/series.conf 2009-02-12 10:20:50.000000000 +0100 @@ -1259,6 +1259,8 @@ patches.fixes/ipv6-disallow-assigning-invalid-addresses.patch patches.fixes/ipv6-dont-forward-unspec-src.patch patches.fixes/net-fix-recursive-descent-in-__scm_destroy.patch + patches.fixes/kabi-turn-off-kabi-check-for-struct-scm_fp_list-change.patch + patches.fixes/kabi-hack-for-scm_work_list-in-struct-task_struct.patch patches.fixes/disable-tso-and-gso-during-urg patches.fixes/ipv6_na_no_warn_for_local_packets.patch