From 9d49f06141912b7b8d6f130c1ea6254d6147d8ab Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 2 Mar 2012 03:28:47 +0000 Subject: [PATCH] Update to 3.2.9 svn path=/dists/sid/linux-2.6/; revision=18761 --- debian/changelog | 14 ++- ...reate-files-in-tmp-with-predictable-.patch | 41 ------- ...Fix-an-Oops-in-the-NFSv4-getacl-code.patch | 96 ---------------- ...q-handle-pending-irqs-in-irq-startup.patch | 107 ------------------ ...neshot-irqs-when-thread-is-not-woken.patch | 64 ----------- .../all/rt/peter_zijlstra-re-_3_0-rt4.patch | 7 +- debian/patches/series/base | 3 +- debian/patches/series/base-extra | 2 - 8 files changed, 18 insertions(+), 316 deletions(-) delete mode 100644 debian/patches/bugfix/all/builddeb-Don-t-create-files-in-tmp-with-predictable-.patch delete mode 100644 debian/patches/bugfix/all/nfsv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch delete mode 100644 debian/patches/features/all/rt/genirq-handle-pending-irqs-in-irq-startup.patch delete mode 100644 debian/patches/features/all/rt/genirq-unmask-oneshot-irqs-when-thread-is-not-woken.patch diff --git a/debian/changelog b/debian/changelog index fc7b0f259..e8bdde92f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,16 @@ -linux-2.6 (3.2.7-2) UNRELEASED; urgency=low +linux-2.6 (3.2.9-1) UNRELEASED; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.8 + - [i386] i387: move TS_USEDFPU flag from thread_info to task_struct + - [x86] additional refactoring of FPU/SSE state save and restore + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.9 + - vfs: fix d_inode_lookup() dentry ref leak + - target: Allow control CDBs with data > 1 page + - epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree() + - epoll: ep_unregister_pollwait() can use the freed pwq->whead + - epoll: limit paths (CVE-2011-1083) + - cdrom: use copy_to_user() without the underscores [ Bastian Blank ] * [mips,mipsel] Also remove ext4 modules from installer. diff --git a/debian/patches/bugfix/all/builddeb-Don-t-create-files-in-tmp-with-predictable-.patch b/debian/patches/bugfix/all/builddeb-Don-t-create-files-in-tmp-with-predictable-.patch deleted file mode 100644 index 9f202bd1d..000000000 --- a/debian/patches/bugfix/all/builddeb-Don-t-create-files-in-tmp-with-predictable-.patch +++ /dev/null @@ -1,41 +0,0 @@ -From b27be705aaeb527613e1b7ee2964c52453ebc337 Mon Sep 17 00:00:00 2001 -From: Ben Hutchings -Date: Tue, 14 Feb 2012 02:19:04 +0000 -Subject: [PATCH] builddeb: Don't create files in /tmp with predictable names - -The current use of /tmp is insecure. - -Signed-off-by: Ben Hutchings -Cc: stable@vger.kernel.org ---- - scripts/package/builddeb | 12 ++++++------ - 1 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/scripts/package/builddeb b/scripts/package/builddeb -index f6cbc3d..3c6c0b1 100644 ---- a/scripts/package/builddeb -+++ b/scripts/package/builddeb -@@ -238,14 +238,14 @@ EOF - fi - - # Build header package --(cd $srctree; find . -name Makefile -o -name Kconfig\* -o -name \*.pl > /tmp/files$$) --(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> /tmp/files$$) --(cd $objtree; find .config Module.symvers include scripts -type f >> /tmp/objfiles$$) -+(cd $srctree; find . -name Makefile -o -name Kconfig\* -o -name \*.pl > "$objtree/debian/hdrsrcfiles") -+(cd $srctree; find arch/$SRCARCH/include include scripts -type f >> "$objtree/debian/hdrsrcfiles") -+(cd $objtree; find .config Module.symvers include scripts -type f >> "$objtree/debian/hdrobjfiles") - destdir=$kernel_headers_dir/usr/src/linux-headers-$version - mkdir -p "$destdir" --(cd $srctree; tar -c -f - -T /tmp/files$$) | (cd $destdir; tar -xf -) --(cd $objtree; tar -c -f - -T /tmp/objfiles$$) | (cd $destdir; tar -xf -) --rm -f /tmp/files$$ /tmp/objfiles$$ -+(cd $srctree; tar -c -f - -T "$objtree/debian/hdrsrcfiles") | (cd $destdir; tar -xf -) -+(cd $objtree; tar -c -f - -T "$objtree/debian/hdrobjfiles") | (cd $destdir; tar -xf -) -+rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles" - arch=$(dpkg --print-architecture) - - cat <> debian/control --- -1.7.9 - diff --git a/debian/patches/bugfix/all/nfsv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch b/debian/patches/bugfix/all/nfsv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch deleted file mode 100644 index 7e038193d..000000000 --- a/debian/patches/bugfix/all/nfsv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 331818f1c468a24e581aedcbe52af799366a9dfe Mon Sep 17 00:00:00 2001 -From: Trond Myklebust -Date: Fri, 3 Feb 2012 18:30:53 -0500 -Subject: [PATCH] NFSv4: Fix an Oops in the NFSv4 getacl code - -Commit bf118a342f10dafe44b14451a1392c3254629a1f (NFSv4: include bitmap -in nfsv4 get acl data) introduces the 'acl_scratch' page for the case -where we may need to decode multi-page data. However it fails to take -into account the fact that the variable may be NULL (for the case where -we're not doing multi-page decode), and it also attaches it to the -encoding xdr_stream rather than the decoding one. - -The immediate result is an Oops in nfs4_xdr_enc_getacl due to the -call to page_address() with a NULL page pointer. - -Signed-off-by: Trond Myklebust -Cc: Andy Adamson -Cc: stable@vger.kernel.org ---- - fs/nfs/nfs4proc.c | 8 ++++---- - fs/nfs/nfs4xdr.c | 5 ++++- - include/linux/nfs_xdr.h | 2 +- - 3 files changed, 9 insertions(+), 6 deletions(-) - -diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c -index f0c849c..d202e04 100644 ---- a/fs/nfs/nfs4proc.c -+++ b/fs/nfs/nfs4proc.c -@@ -3575,8 +3575,8 @@ static ssize_t __nfs4_get_acl_uncached(struct inode *inode, void *buf, size_t bu - } - if (npages > 1) { - /* for decoding across pages */ -- args.acl_scratch = alloc_page(GFP_KERNEL); -- if (!args.acl_scratch) -+ res.acl_scratch = alloc_page(GFP_KERNEL); -+ if (!res.acl_scratch) - goto out_free; - } - args.acl_len = npages * PAGE_SIZE; -@@ -3612,8 +3612,8 @@ out_free: - for (i = 0; i < npages; i++) - if (pages[i]) - __free_page(pages[i]); -- if (args.acl_scratch) -- __free_page(args.acl_scratch); -+ if (res.acl_scratch) -+ __free_page(res.acl_scratch); - return ret; - } - -diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c -index 95e92e4..33bd8d0 100644 ---- a/fs/nfs/nfs4xdr.c -+++ b/fs/nfs/nfs4xdr.c -@@ -2522,7 +2522,6 @@ static void nfs4_xdr_enc_getacl(struct rpc_rqst *req, struct xdr_stream *xdr, - - xdr_inline_pages(&req->rq_rcv_buf, replen << 2, - args->acl_pages, args->acl_pgbase, args->acl_len); -- xdr_set_scratch_buffer(xdr, page_address(args->acl_scratch), PAGE_SIZE); - - encode_nops(&hdr); - } -@@ -6032,6 +6031,10 @@ nfs4_xdr_dec_getacl(struct rpc_rqst *rqstp, struct xdr_stream *xdr, - struct compound_hdr hdr; - int status; - -+ if (res->acl_scratch != NULL) { -+ void *p = page_address(res->acl_scratch); -+ xdr_set_scratch_buffer(xdr, p, PAGE_SIZE); -+ } - status = decode_compound_hdr(xdr, &hdr); - if (status) - goto out; -diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h -index a764cef..d6ba9a1 100644 ---- a/include/linux/nfs_xdr.h -+++ b/include/linux/nfs_xdr.h -@@ -614,7 +614,6 @@ struct nfs_getaclargs { - size_t acl_len; - unsigned int acl_pgbase; - struct page ** acl_pages; -- struct page * acl_scratch; - struct nfs4_sequence_args seq_args; - }; - -@@ -624,6 +623,7 @@ struct nfs_getaclres { - size_t acl_len; - size_t acl_data_offset; - int acl_flags; -+ struct page * acl_scratch; - struct nfs4_sequence_res seq_res; - }; - --- -1.7.9 - diff --git a/debian/patches/features/all/rt/genirq-handle-pending-irqs-in-irq-startup.patch b/debian/patches/features/all/rt/genirq-handle-pending-irqs-in-irq-startup.patch deleted file mode 100644 index b28118723..000000000 --- a/debian/patches/features/all/rt/genirq-handle-pending-irqs-in-irq-startup.patch +++ /dev/null @@ -1,107 +0,0 @@ -Subject: genirq: Handle pending irqs in irq_startup() -From: Thomas Gleixner -Date: Wed, 08 Feb 2012 11:57:52 +0100 - -Irqs might be pending when irq_startup() is called. Call the resend -function in irq_startup() otherwise the irq line might be blocked -forever. - -Reported-and-tested-by: Russell King -Signed-off-by: Thomas Gleixner ---- - kernel/irq/autoprobe.c | 4 ++-- - kernel/irq/chip.c | 17 ++++++++++------- - kernel/irq/internals.h | 2 +- - kernel/irq/manage.c | 2 +- - 4 files changed, 14 insertions(+), 11 deletions(-) - -Index: linux-3.2/kernel/irq/autoprobe.c -=================================================================== ---- linux-3.2.orig/kernel/irq/autoprobe.c -+++ linux-3.2/kernel/irq/autoprobe.c -@@ -53,7 +53,7 @@ unsigned long probe_irq_on(void) - if (desc->irq_data.chip->irq_set_type) - desc->irq_data.chip->irq_set_type(&desc->irq_data, - IRQ_TYPE_PROBE); -- irq_startup(desc); -+ irq_startup(desc, false); - } - raw_spin_unlock_irq(&desc->lock); - } -@@ -70,7 +70,7 @@ unsigned long probe_irq_on(void) - raw_spin_lock_irq(&desc->lock); - if (!desc->action && irq_settings_can_probe(desc)) { - desc->istate |= IRQS_AUTODETECT | IRQS_WAITING; -- if (irq_startup(desc)) -+ if (irq_startup(desc, false)) - desc->istate |= IRQS_PENDING; - } - raw_spin_unlock_irq(&desc->lock); -Index: linux-3.2/kernel/irq/chip.c -=================================================================== ---- linux-3.2.orig/kernel/irq/chip.c -+++ linux-3.2/kernel/irq/chip.c -@@ -157,19 +157,22 @@ static void irq_state_set_masked(struct - irqd_set(&desc->irq_data, IRQD_IRQ_MASKED); - } - --int irq_startup(struct irq_desc *desc) -+int irq_startup(struct irq_desc *desc, bool resend) - { -+ int ret = 0; -+ - irq_state_clr_disabled(desc); - desc->depth = 0; - - if (desc->irq_data.chip->irq_startup) { -- int ret = desc->irq_data.chip->irq_startup(&desc->irq_data); -+ ret = desc->irq_data.chip->irq_startup(&desc->irq_data); - irq_state_clr_masked(desc); -- return ret; -+ } else { -+ irq_enable(desc); - } -- -- irq_enable(desc); -- return 0; -+ if (resend) -+ check_irq_resend(desc, desc->irq_data.irq); -+ return ret; - } - - void irq_shutdown(struct irq_desc *desc) -@@ -646,7 +649,7 @@ __irq_set_handler(unsigned int irq, irq_ - irq_settings_set_noprobe(desc); - irq_settings_set_norequest(desc); - irq_settings_set_nothread(desc); -- irq_startup(desc); -+ irq_startup(desc, true); - } - out: - irq_put_desc_busunlock(desc, flags); -Index: linux-3.2/kernel/irq/internals.h -=================================================================== ---- linux-3.2.orig/kernel/irq/internals.h -+++ linux-3.2/kernel/irq/internals.h -@@ -67,7 +67,7 @@ extern int __irq_set_trigger(struct irq_ - extern void __disable_irq(struct irq_desc *desc, unsigned int irq, bool susp); - extern void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume); - --extern int irq_startup(struct irq_desc *desc); -+extern int irq_startup(struct irq_desc *desc, bool resend); - extern void irq_shutdown(struct irq_desc *desc); - extern void irq_enable(struct irq_desc *desc); - extern void irq_disable(struct irq_desc *desc); -Index: linux-3.2/kernel/irq/manage.c -=================================================================== ---- linux-3.2.orig/kernel/irq/manage.c -+++ linux-3.2/kernel/irq/manage.c -@@ -1029,7 +1029,7 @@ __setup_irq(unsigned int irq, struct irq - desc->istate |= IRQS_ONESHOT; - - if (irq_settings_can_autoenable(desc)) -- irq_startup(desc); -+ irq_startup(desc, true); - else - /* Undo nested disables: */ - desc->depth = 1; diff --git a/debian/patches/features/all/rt/genirq-unmask-oneshot-irqs-when-thread-is-not-woken.patch b/debian/patches/features/all/rt/genirq-unmask-oneshot-irqs-when-thread-is-not-woken.patch deleted file mode 100644 index 379e39ecb..000000000 --- a/debian/patches/features/all/rt/genirq-unmask-oneshot-irqs-when-thread-is-not-woken.patch +++ /dev/null @@ -1,64 +0,0 @@ -Subject: genirq: Unmask oneshot irqs when thread was not woken -From: Thomas Gleixner -Date: Tue, 07 Feb 2012 17:58:03 +0100 - -When the primary handler of an interrupt which is marked IRQ_ONESHOT -does not wake the thread (e.g. due to a spurious interrupt) then -nothing ever unmasks the interrupt line again. Handle it gracefully. - -Reported-by: Lothar Wassmann -Signed-off-by: Thomas Gleixner ---- - kernel/irq/chip.c | 25 +++++++++++++++++++++++-- - 1 file changed, 23 insertions(+), 2 deletions(-) - -Index: linux-3.2/kernel/irq/chip.c -=================================================================== ---- linux-3.2.orig/kernel/irq/chip.c -+++ linux-3.2/kernel/irq/chip.c -@@ -330,6 +330,24 @@ out_unlock: - } - EXPORT_SYMBOL_GPL(handle_simple_irq); - -+/* -+ * Called unconditionally from handle_level_irq() and only for oneshot -+ * interrupts from handle_fasteoi_irq() -+ */ -+static void cond_unmask_irq(struct irq_desc *desc) -+{ -+ /* -+ * We need to unmask in the following cases: -+ * - Standard level irq (IRQF_ONESHOT is not set) -+ * - Oneshot irq which did not wake the thread (caused by a -+ * spurious interrupt or a primary handler handling it -+ * completely). -+ */ -+ if (!irqd_irq_disabled(&desc->irq_data) && -+ irqd_irq_masked(&desc->irq_data) && !desc->threads_oneshot) -+ unmask_irq(desc); -+} -+ - /** - * handle_level_irq - Level type irq handler - * @irq: the interrupt number -@@ -362,8 +380,8 @@ handle_level_irq(unsigned int irq, struc - - handle_irq_event(desc); - -- if (!irqd_irq_disabled(&desc->irq_data) && !(desc->istate & IRQS_ONESHOT)) -- unmask_irq(desc); -+ cond_unmask_irq(desc); -+ - out_unlock: - raw_spin_unlock(&desc->lock); - } -@@ -417,6 +435,9 @@ handle_fasteoi_irq(unsigned int irq, str - preflow_handler(desc); - handle_irq_event(desc); - -+ if (desc->istate & IRQS_ONESHOT) -+ cond_unmask_irq(desc); -+ - out_eoi: - desc->irq_data.chip->irq_eoi(&desc->irq_data); - out_unlock: diff --git a/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch b/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch index 79a764664..e9bd4dc0f 100644 --- a/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch +++ b/debian/patches/features/all/rt/peter_zijlstra-re-_3_0-rt4.patch @@ -14,6 +14,7 @@ you can flip kmaps around like below. Signed-off-by: Peter Zijlstra [dvhart@linux.intel.com: build fix] Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins +[bwh: Fix context in arch/x86/kernel/process_32.c after FPU changes in 3.2.8] --- arch/x86/kernel/process_32.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/sched.h | 5 +++++ @@ -71,9 +72,9 @@ Index: linux-3.2/arch/x86/kernel/process_32.c + } +#endif + - /* If we're going to preload the fpu context, make sure clts - is run while we're batching the cpu state updates. */ - if (preload_fpu) + /* + * Leave lazy mode, flushing any hypercalls made here. + * This must be done before restoring TLS segments so Index: linux-3.2/include/linux/sched.h =================================================================== --- linux-3.2.orig/include/linux/sched.h diff --git a/debian/patches/series/base b/debian/patches/series/base index 31536d2c6..bc08410cd 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -77,8 +77,7 @@ + features/all/hwmon-it87-Add-IT8728F-support.patch + bugfix/arm/ARM-ixp4xx-mtd-oops.patch -+ bugfix/all/builddeb-Don-t-create-files-in-tmp-with-predictable-.patch + bugfix/x86/drm-i915-do-not-enable-RC6p-on-Sandy-Bridge.patch + bugfix/x86/drm-i915-fix-operator-precedence-when-enabling-RC6p.patch + bugfix/all/ipsec-be-careful-of-non-existing-mac-headers.patch -+ bugfix/all/nfsv4-Fix-an-Oops-in-the-NFSv4-getacl-code.patch + diff --git a/debian/patches/series/base-extra b/debian/patches/series/base-extra index f922af93f..9c7aaeb4d 100644 --- a/debian/patches/series/base-extra +++ b/debian/patches/series/base-extra @@ -1,7 +1,5 @@ + features/all/rt/x86_64-patch-for-idle-notifiers.patch featureset=rt + features/all/rt/re-possible-slab-deadlock-while-doing-ifenslave-1.patch featureset=rt -+ features/all/rt/genirq-unmask-oneshot-irqs-when-thread-is-not-woken.patch featureset=rt -+ features/all/rt/genirq-handle-pending-irqs-in-irq-startup.patch featureset=rt + features/all/rt/x86-kprobes-remove-bogus-preempt-enable.patch featureset=rt + features/all/rt/x86-hpet-disable-msi-on-lenovo-w510.patch featureset=rt + features/all/rt/block-shorten-interrupt-disabled-regions.patch featureset=rt