2009-03-31 23:20:31

by Chris Wright

[permalink] [raw]
Subject: [patch 00/45] 2.6.29.1 -stable review

This is the start of the stable review cycle for the 2.6.29.1 release.
There are 45 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let us know. If anyone is a maintainer of the proper subsystem, and
wants to add a Signed-off-by: line to the patch, please respond with it.

These patches are sent out with a number of different people on the
Cc: line. If you wish to be a reviewer, please email [email protected]
to add your name to the list. If you want to be off the reviewer list,
also email us.

Responses should be made by Thursday, April 2, 23:00 UTC.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.29.1-rc1.gz
and the diffstat can be found below.

thanks,
-chris

Makefile | 2
arch/arm/include/asm/elf.h | 1
arch/arm/kernel/module.c | 9
arch/arm/mach-iop13xx/pci.c | 5
arch/arm/mach-omap2/mmc-twl4030.c | 1
arch/arm/mm/mmu.c | 2
arch/x86/kernel/check.c | 6
arch/x86/kernel/cpu/mtrr/generic.c | 51 +--
arch/x86/kernel/ptrace.c | 3
arch/x86/kernel/tlb_uv.c | 3
arch/x86/kvm/paging_tmpl.h | 2
arch/x86/kvm/svm.c | 41 +-
arch/x86/kvm/vmx.c | 2
arch/x86/lguest/boot.c | 10
arch/x86/mm/pat.c | 5
arch/x86/pci/i386.c | 3
drivers/char/raw.c | 1
drivers/lguest/page_tables.c | 4
drivers/media/dvb/firewire/firedtv-avc.c | 6
drivers/net/dnet.c | 1
drivers/net/wireless/ath5k/base.c | 22 +
drivers/net/wireless/ath5k/base.h | 2
drivers/net/wireless/ath9k/recv.c | 7
drivers/net/wireless/ath9k/xmit.c | 2
drivers/net/wireless/b43/xmit.c | 2
drivers/scsi/arm/cumana_2.c | 2
drivers/scsi/sg.c | 466 ++++++++++++++-----------------
drivers/usb/core/message.c | 3
drivers/usb/core/quirks.c | 4
drivers/usb/core/sysfs.c | 4
drivers/usb/gadget/f_rndis.c | 2
drivers/usb/host/ehci-q.c | 32 ++
drivers/usb/host/ehci.h | 3
drivers/usb/storage/cypress_atacb.c | 15
drivers/usb/storage/scsiglue.c | 6
drivers/video/pxafb.c | 14
fs/cifs/CHANGES | 3
fs/cifs/cifssmb.c | 6
fs/cifs/connect.c | 2
fs/fuse/file.c | 3
include/linux/mm.h | 15
include/linux/usb/quirks.h | 3
mm/memory.c | 6
net/bridge/br_if.c | 1
net/core/dev.c | 9
net/ipv4/udp.c | 6
net/ipv6/ip6_input.c | 4
net/netfilter/nf_conntrack_proto_tcp.c | 3
net/wireless/reg.c | 23 +
net/xfrm/xfrm_state.c | 2
50 files changed, 490 insertions(+), 340 deletions(-)


2009-04-01 03:47:29

by David Miller

[permalink] [raw]
Subject: Re: [patch 00/45] 2.6.29.1 -stable review

From: Chris Wright <[email protected]>
Date: Tue, 31 Mar 2009 16:10:45 -0700

> Responses should be made by Thursday, April 2, 23:00 UTC.
> Anything received after that time might be too late.

Chris, any chance you can include the 3 sparc fixes I sent
to stable right before you posted this?

Thanks!

2009-04-01 04:42:56

by Michael Ira Krufky

[permalink] [raw]
Subject: Re: [patch 00/45] 2.6.29.1 -stable review

David Miller wrote:
> From: Chris Wright <[email protected]>
> Date: Tue, 31 Mar 2009 16:10:45 -0700
>
>> Responses should be made by Thursday, April 2, 23:00 UTC.
>> Anything received after that time might be too late.
>
> Chris, any chance you can include the 3 sparc fixes I sent
> to stable right before you posted this?
>
> Thanks!
>

Chris,

...and also the v4l2-common fix that I sent ~10 hours before you posted?

If you can add that one too, I'd appreciate it.

Thanks,

Mike Krufky

2009-04-02 07:03:35

by Chris Wright

[permalink] [raw]
Subject: Re: [patch 00/45] 2.6.29.1 -stable review

* Michael Krufky ([email protected]) wrote:
> David Miller wrote:
>> From: Chris Wright <[email protected]>
>> Date: Tue, 31 Mar 2009 16:10:45 -0700
>>
>>> Responses should be made by Thursday, April 2, 23:00 UTC.
>>> Anything received after that time might be too late.
>>
>> Chris, any chance you can include the 3 sparc fixes I sent
>> to stable right before you posted this?
>>
>> Thanks!
>
> ...and also the v4l2-common fix that I sent ~10 hours before you posted?
>
> If you can add that one too, I'd appreciate it.

Typically I'd rather push these to the next cycle (some things will
always miss due to timing), but needed to put -rc2 out (needed to rev
to drop the scsi patches anyway), so I added these.

The whole updated patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.29.1-rc2.gz
and the diffstat can be found below.

thanks,
-chris
--

Makefile | 2 -
arch/arm/include/asm/elf.h | 1
arch/arm/kernel/module.c | 9 +++++
arch/arm/mach-iop13xx/pci.c | 5 ++-
arch/arm/mach-omap2/mmc-twl4030.c | 1
arch/arm/mm/mmu.c | 2 -
arch/sparc/include/asm/tlb_64.h | 4 +-
arch/sparc/kernel/nmi.c | 23 +++++++++++++
arch/sparc/kernel/smp_64.c | 4 +-
arch/x86/kernel/check.c | 6 +--
arch/x86/kernel/cpu/mtrr/generic.c | 51 ++++++++++++++++++-------------
arch/x86/kernel/ptrace.c | 3 -
arch/x86/kernel/tlb_uv.c | 3 +
arch/x86/kvm/paging_tmpl.h | 2 -
arch/x86/kvm/svm.c | 41 +++++++++++++++++-------
arch/x86/kvm/vmx.c | 2 -
arch/x86/lguest/boot.c | 10 +++++-
arch/x86/mm/pat.c | 5 +--
arch/x86/pci/i386.c | 3 +
drivers/char/raw.c | 1
drivers/lguest/page_tables.c | 4 +-
drivers/media/dvb/firewire/firedtv-avc.c | 6 +++
drivers/media/video/v4l2-common.c | 8 ++--
drivers/net/dnet.c | 1
drivers/net/wireless/ath5k/base.c | 22 +++++++++----
drivers/net/wireless/ath5k/base.h | 2 -
drivers/net/wireless/ath9k/recv.c | 7 +++-
drivers/net/wireless/ath9k/xmit.c | 2 -
drivers/net/wireless/b43/xmit.c | 2 -
drivers/scsi/arm/cumana_2.c | 2 -
drivers/usb/core/message.c | 3 +
drivers/usb/core/quirks.c | 4 ++
drivers/usb/core/sysfs.c | 4 +-
drivers/usb/gadget/f_rndis.c | 2 -
drivers/usb/host/ehci-q.c | 32 +++++++++++++++++++
drivers/usb/host/ehci.h | 3 +
drivers/usb/storage/cypress_atacb.c | 15 ++++-----
drivers/usb/storage/scsiglue.c | 6 +++
drivers/video/pxafb.c | 14 ++++++++
fs/cifs/CHANGES | 3 +
fs/cifs/cifssmb.c | 6 ++-
fs/cifs/connect.c | 2 -
fs/fuse/file.c | 3 +
include/linux/mm.h | 15 +++++++--
include/linux/usb/quirks.h | 3 +
mm/memory.c | 6 ++-
net/bridge/br_if.c | 1
net/core/dev.c | 9 +----
net/ipv4/udp.c | 6 +++
net/ipv6/ip6_input.c | 4 --
net/netfilter/nf_conntrack_proto_tcp.c | 3 +
net/wireless/reg.c | 23 ++++++++++---
net/xfrm/xfrm_state.c | 2 -
53 files changed, 296 insertions(+), 107 deletions(-)

2009-04-02 07:03:58

by Chris Wright

[permalink] [raw]
Subject: [PATCH 48/45] sparc64: Fix reset hangs on Niagara systems.

-stable review patch. If anyone has any objections, please let us know.
---------------------

From: David S. Miller <[email protected]>

[ Upstream commit ffaba674090f287afe0c44fd8d978c64c03581a8 ]

Hypervisor versions older than version 1.6.1 cannot handle
leaving the profile counter overflow interrupt chirping
when the system does a soft reset.

So use a reboot notifier to shut off the NMI watchdog.

Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Chris Wright <[email protected]>
---
arch/sparc/kernel/nmi.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)

--- a/arch/sparc/kernel/nmi.c
+++ b/arch/sparc/kernel/nmi.c
@@ -13,6 +13,7 @@
#include <linux/module.h>
#include <linux/kprobes.h>
#include <linux/kernel_stat.h>
+#include <linux/reboot.h>
#include <linux/slab.h>
#include <linux/kdebug.h>
#include <linux/delay.h>
@@ -206,13 +207,33 @@ void nmi_adjust_hz(unsigned int new_hz)
}
EXPORT_SYMBOL_GPL(nmi_adjust_hz);

+static int nmi_shutdown(struct notifier_block *nb, unsigned long cmd, void *p)
+{
+ on_each_cpu(stop_watchdog, NULL, 1);
+ return 0;
+}
+
+static struct notifier_block nmi_reboot_notifier = {
+ .notifier_call = nmi_shutdown,
+};
+
int __init nmi_init(void)
{
+ int err;
+
nmi_usable = 1;

on_each_cpu(start_watchdog, NULL, 1);

- return check_nmi_watchdog();
+ err = check_nmi_watchdog();
+ if (!err) {
+ err = register_reboot_notifier(&nmi_reboot_notifier);
+ if (err) {
+ nmi_usable = 0;
+ on_each_cpu(stop_watchdog, NULL, 1);
+ }
+ }
+ return err;
}

static int __init setup_nmi_watchdog(char *str)

2009-04-02 07:04:28

by Chris Wright

[permalink] [raw]
Subject: [PATCH 49/45] V4L: v4l2-common: remove incorrect MODULE test

-stable review patch. If anyone has any objections, please let us know.
---------------------

From: Hans Verkuil <[email protected]>

upstream commit: d64260d58865004c6354e024da3450fdd607ea07

v4l2-common doesn't have to be a module for it to call request_module().
Just remove that test.

Without this patch loading ivtv as a module while v4l2-common is compiled
into the kernel will cause a delayed load of the i2c modules that ivtv
needs since request_module is never called directly.

While it is nice to see the delayed load in action, it is not so nice in
that ivtv fails to do a lot of necessary i2c initializations and will oops
later on with a division-by-zero.

Thanks to Mark Lord for reporting this and helping me figure out what was
wrong.

Thanks-to: Guennadi Liakhovetski <[email protected]>
Thanks-to: Mark Lord <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>
Signed-off-by: Michael Krufky <[email protected]>
Signed-off-by: Chris Wright <[email protected]>
---
drivers/media/video/v4l2-common.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

--- a/drivers/media/video/v4l2-common.c
+++ b/drivers/media/video/v4l2-common.c
@@ -910,10 +910,10 @@ struct v4l2_subdev *v4l2_i2c_new_subdev(
struct i2c_board_info info;

BUG_ON(!dev);
-#ifdef MODULE
+
if (module_name)
request_module(module_name);
-#endif
+
/* Setup the i2c board info with the device type and
the device address. */
memset(&info, 0, sizeof(info));
@@ -958,10 +958,10 @@ struct v4l2_subdev *v4l2_i2c_new_probed_
struct i2c_board_info info;

BUG_ON(!dev);
-#ifdef MODULE
+
if (module_name)
request_module(module_name);
-#endif
+
/* Setup the i2c board info with the device type and
the device address. */
memset(&info, 0, sizeof(info));

2009-04-02 07:04:48

by Chris Wright

[permalink] [raw]
Subject: [PATCH 47/45] sparc64: Flush TLB before releasing pages.

-stable review patch. If anyone has any objections, please let us know.
---------------------

From: David S. Miller <[email protected]>

[ Upstream commit a552a42cfa91ab653128dff89a70c8dde7fed042 ]

tlb_flush_mmu() needs to flush pending TLB entries before
processing the mmu_gather ->pages list.

Noticed by Benjamin Herrenschmidt.

Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Chris Wright <[email protected]>
---
arch/sparc/include/asm/tlb_64.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/sparc/include/asm/tlb_64.h
+++ b/arch/sparc/include/asm/tlb_64.h
@@ -58,6 +58,8 @@ static inline struct mmu_gather *tlb_gat
static inline void tlb_flush_mmu(struct mmu_gather *mp)
{
if (mp->need_flush) {
+ if (!mp->fullmm)
+ flush_tlb_pending();
free_pages_and_swap_cache(mp->pages, mp->pages_nr);
mp->pages_nr = 0;
mp->need_flush = 0;
@@ -78,8 +80,6 @@ static inline void tlb_finish_mmu(struct

if (mp->fullmm)
mp->fullmm = 0;
- else
- flush_tlb_pending();

/* keep the page table cache within bounds */
check_pgt_cache();

2009-04-02 07:05:20

by Chris Wright

[permalink] [raw]
Subject: [PATCH 46/45] sparc64: Fix MM refcount check in smp_flush_tlb_pending().

-stable review patch. If anyone has any objections, please let us know.
---------------------

From: David S. Miller <[email protected]>

[ Upstream commit f9384d41c02408dd404aa64d66d0ef38adcf6479 ]

As explained by Benjamin Herrenschmidt:

> CPU 0 is running the context, task->mm == task->active_mm == your
> context. The CPU is in userspace happily churning things.
>
> CPU 1 used to run it, not anymore, it's now running fancyfsd which
> is a kernel thread, but current->active_mm still points to that
> same context.
>
> Because there's only one "real" user, mm_users is 1 (but mm_count is
> elevated, it's just that the presence on CPU 1 as active_mm has no
> effect on mm_count().
>
> At this point, fancyfsd decides to invalidate a mapping currently mapped
> by that context, for example because a networked file has changed
> remotely or something like that, using unmap_mapping_ranges().
>
> So CPU 1 goes into the zapping code, which eventually ends up calling
> flush_tlb_pending(). Your test will succeed, as current->active_mm is
> indeed the target mm for the flush, and mm_users is indeed 1. So you
> will -not- send an IPI to the other CPU, and CPU 0 will continue happily
> accessing the pages that should have been unmapped.

To fix this problem, check ->mm instead of ->active_mm, and this
means:

> So if you test current->mm, you effectively account for mm_users == 1,
> so the only way the mm can be active on another processor is as a lazy
> mm for a kernel thread. So your test should work properly as long
> as you don't have a HW that will do speculative TLB reloads into the
> TLB on that other CPU (and even if you do, you flush-on-switch-in should
> get rid of any crap here).

And therefore we should be OK.

Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Chris Wright <[email protected]>
---
arch/sparc/kernel/smp_64.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/sparc/kernel/smp_64.c
+++ b/arch/sparc/kernel/smp_64.c
@@ -1031,7 +1031,7 @@ void smp_fetch_global_regs(void)
* If the address space is non-shared (ie. mm->count == 1) we avoid
* cross calls when we want to flush the currently running process's
* tlb state. This is done by clearing all cpu bits except the current
- * processor's in current->active_mm->cpu_vm_mask and performing the
+ * processor's in current->mm->cpu_vm_mask and performing the
* flush locally only. This will force any subsequent cpus which run
* this task to flush the context from the local tlb if the process
* migrates to another cpu (again).
@@ -1074,7 +1074,7 @@ void smp_flush_tlb_pending(struct mm_str
u32 ctx = CTX_HWBITS(mm->context);
int cpu = get_cpu();

- if (mm == current->active_mm && atomic_read(&mm->mm_users) == 1)
+ if (mm == current->mm && atomic_read(&mm->mm_users) == 1)
mm->cpu_vm_mask = cpumask_of_cpu(cpu);
else
smp_cross_call_masked(&xcall_flush_tlb_pending,