Update to 3.2.9
svn path=/dists/sid/linux-2.6/; revision=18761
This commit is contained in:
parent
0eff657a60
commit
9d49f06141
|
@ -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.
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
From b27be705aaeb527613e1b7ee2964c52453ebc337 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
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 <ben@decadent.org.uk>
|
||||
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 <<EOF >> debian/control
|
||||
--
|
||||
1.7.9
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
From 331818f1c468a24e581aedcbe52af799366a9dfe Mon Sep 17 00:00:00 2001
|
||||
From: Trond Myklebust <Trond.Myklebust@netapp.com>
|
||||
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 <Trond.Myklebust@netapp.com>
|
||||
Cc: Andy Adamson <andros@netapp.com>
|
||||
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
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
Subject: genirq: Handle pending irqs in irq_startup()
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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 <rmk+kernel@arm.linux.org.uk>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
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;
|
|
@ -1,64 +0,0 @@
|
|||
Subject: genirq: Unmask oneshot irqs when thread was not woken
|
||||
From: Thomas Gleixner <tglx@linutronix.de>
|
||||
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 <lw@karo-electronics.de>
|
||||
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
||||
---
|
||||
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:
|
|
@ -14,6 +14,7 @@ you can flip kmaps around like below.
|
|||
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
||||
[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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue