]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 14 Jan 2013 05:37:39 +0000 (21:37 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 14 Jan 2013 05:37:39 +0000 (21:37 -0800)
added patches:
ath5k-fix-tx-path-skb-leaks.patch
bcma-mips-fix-clearing-device-irq.patch
kvm-fix-user-memslot-overlap-check.patch
mips-fix-poweroff-failure-when-hotplug_cpu-configured.patch
powerpc-add-missing-null-terminator-to-avoid-boot-panic-on-ppc40x.patch
powerpc-fix-config_relocatable-y-config_crash_dump-n-build.patch
powerpc-vdso-remove-redundant-locking-in-update_vsyscall_tz.patch
regulator-wm831x-set-the-new-rather-than-old-value-for-dvs-vsel.patch
s390-cio-fix-pgid-reserved-check.patch

queue-3.4/ath5k-fix-tx-path-skb-leaks.patch [new file with mode: 0644]
queue-3.4/bcma-mips-fix-clearing-device-irq.patch [new file with mode: 0644]
queue-3.4/kvm-fix-user-memslot-overlap-check.patch [new file with mode: 0644]
queue-3.4/mips-fix-poweroff-failure-when-hotplug_cpu-configured.patch [new file with mode: 0644]
queue-3.4/powerpc-add-missing-null-terminator-to-avoid-boot-panic-on-ppc40x.patch [new file with mode: 0644]
queue-3.4/powerpc-fix-config_relocatable-y-config_crash_dump-n-build.patch [new file with mode: 0644]
queue-3.4/powerpc-vdso-remove-redundant-locking-in-update_vsyscall_tz.patch [new file with mode: 0644]
queue-3.4/regulator-wm831x-set-the-new-rather-than-old-value-for-dvs-vsel.patch [new file with mode: 0644]
queue-3.4/s390-cio-fix-pgid-reserved-check.patch [new file with mode: 0644]
queue-3.4/series [new file with mode: 0644]

diff --git a/queue-3.4/ath5k-fix-tx-path-skb-leaks.patch b/queue-3.4/ath5k-fix-tx-path-skb-leaks.patch
new file mode 100644 (file)
index 0000000..eecdc15
--- /dev/null
@@ -0,0 +1,52 @@
+From 596ab5ec3bf10a22be30d7cb1d903a4b83fd607c Mon Sep 17 00:00:00 2001
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Mon, 10 Dec 2012 16:40:41 +0100
+Subject: ath5k: fix tx path skb leaks
+
+From: Felix Fietkau <nbd@openwrt.org>
+
+commit 596ab5ec3bf10a22be30d7cb1d903a4b83fd607c upstream.
+
+ieee80211_free_txskb() needs to be used instead of dev_kfree_skb_any for
+tx packets passed to the driver from mac80211
+
+Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/ath/ath5k/base.c         |    4 ++--
+ drivers/net/wireless/ath/ath5k/mac80211-ops.c |    2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath5k/base.c
++++ b/drivers/net/wireless/ath/ath5k/base.c
+@@ -843,7 +843,7 @@ ath5k_txbuf_free_skb(struct ath5k_hw *ah
+               return;
+       dma_unmap_single(ah->dev, bf->skbaddr, bf->skb->len,
+                       DMA_TO_DEVICE);
+-      dev_kfree_skb_any(bf->skb);
++      ieee80211_free_txskb(ah->hw, bf->skb);
+       bf->skb = NULL;
+       bf->skbaddr = 0;
+       bf->desc->ds_data = 0;
+@@ -1570,7 +1570,7 @@ ath5k_tx_queue(struct ieee80211_hw *hw,
+       return;
+ drop_packet:
+-      dev_kfree_skb_any(skb);
++      ieee80211_free_txskb(hw, skb);
+ }
+ static void
+--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
++++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
+@@ -59,7 +59,7 @@ ath5k_tx(struct ieee80211_hw *hw, struct
+       u16 qnum = skb_get_queue_mapping(skb);
+       if (WARN_ON(qnum >= ah->ah_capabilities.cap_queues.q_tx_num)) {
+-              dev_kfree_skb_any(skb);
++              ieee80211_free_txskb(hw, skb);
+               return;
+       }
diff --git a/queue-3.4/bcma-mips-fix-clearing-device-irq.patch b/queue-3.4/bcma-mips-fix-clearing-device-irq.patch
new file mode 100644 (file)
index 0000000..715f57f
--- /dev/null
@@ -0,0 +1,34 @@
+From cbbc0138efe1dcd5426b8fc5d87741f5057aee72 Mon Sep 17 00:00:00 2001
+From: Rafał Miłecki <zajec5@gmail.com>
+Date: Mon, 10 Dec 2012 07:53:56 +0100
+Subject: bcma: mips: fix clearing device IRQ
+
+From: Rafał Miłecki <zajec5@gmail.com>
+
+commit cbbc0138efe1dcd5426b8fc5d87741f5057aee72 upstream.
+
+We were using wrong IRQ number so clearing wasn't working at all.
+Depending on a platform this could result in a one device having two
+interrupts assigned. On BCM4706 this resulted in all IRQs being broken.
+
+Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+Cc: Hauke Mehrtens <hauke@hauke-m.de>
+Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/bcma/driver_mips.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/bcma/driver_mips.c
++++ b/drivers/bcma/driver_mips.c
+@@ -115,7 +115,7 @@ static void bcma_core_mips_set_irq(struc
+                           bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) &
+                           ~(1 << irqflag));
+       else
+-              bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq), 0);
++              bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(oldirq), 0);
+       /* assign the new one */
+       if (irq == 0) {
diff --git a/queue-3.4/kvm-fix-user-memslot-overlap-check.patch b/queue-3.4/kvm-fix-user-memslot-overlap-check.patch
new file mode 100644 (file)
index 0000000..2050a33
--- /dev/null
@@ -0,0 +1,54 @@
+From 5419369ed6bd4cf711fdda5e52a5999b940413f5 Mon Sep 17 00:00:00 2001
+From: Alex Williamson <alex.williamson@redhat.com>
+Date: Thu, 29 Nov 2012 14:07:59 -0700
+Subject: KVM: Fix user memslot overlap check
+
+From: Alex Williamson <alex.williamson@redhat.com>
+
+commit 5419369ed6bd4cf711fdda5e52a5999b940413f5 upstream.
+
+Prior to memory slot sorting this loop compared all of the user memory
+slots for overlap with new entries.  With memory slot sorting, we're
+just checking some number of entries in the array that may or may not
+be user slots.  Instead, walk all the slots with kvm_for_each_memslot,
+which has the added benefit of terminating early when we hit the first
+empty slot, and skip comparison to private slots.
+
+Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
+Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ virt/kvm/kvm_main.c |   13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+--- a/virt/kvm/kvm_main.c
++++ b/virt/kvm/kvm_main.c
+@@ -693,8 +693,7 @@ int __kvm_set_memory_region(struct kvm *
+       int r;
+       gfn_t base_gfn;
+       unsigned long npages;
+-      unsigned long i;
+-      struct kvm_memory_slot *memslot;
++      struct kvm_memory_slot *memslot, *slot;
+       struct kvm_memory_slot old, new;
+       struct kvm_memslots *slots, *old_memslots;
+@@ -741,13 +740,11 @@ int __kvm_set_memory_region(struct kvm *
+       /* Check for overlaps */
+       r = -EEXIST;
+-      for (i = 0; i < KVM_MEMORY_SLOTS; ++i) {
+-              struct kvm_memory_slot *s = &kvm->memslots->memslots[i];
+-
+-              if (s == memslot || !s->npages)
++      kvm_for_each_memslot(slot, kvm->memslots) {
++              if (slot->id >= KVM_MEMORY_SLOTS || slot == memslot)
+                       continue;
+-              if (!((base_gfn + npages <= s->base_gfn) ||
+-                    (base_gfn >= s->base_gfn + s->npages)))
++              if (!((base_gfn + npages <= slot->base_gfn) ||
++                    (base_gfn >= slot->base_gfn + slot->npages)))
+                       goto out_free;
+       }
diff --git a/queue-3.4/mips-fix-poweroff-failure-when-hotplug_cpu-configured.patch b/queue-3.4/mips-fix-poweroff-failure-when-hotplug_cpu-configured.patch
new file mode 100644 (file)
index 0000000..bdc3f00
--- /dev/null
@@ -0,0 +1,43 @@
+From 8add1ecb81f541ef2fcb0b85a5470ad9ecfb4a84 Mon Sep 17 00:00:00 2001
+From: Huacai Chen <chenhc@lemote.com>
+Date: Mon, 13 Aug 2012 20:52:24 +0800
+Subject: MIPS: Fix poweroff failure when HOTPLUG_CPU configured.
+
+From: Huacai Chen <chenhc@lemote.com>
+
+commit 8add1ecb81f541ef2fcb0b85a5470ad9ecfb4a84 upstream.
+
+When poweroff machine, kernel_power_off() call disable_nonboot_cpus().
+And if we have HOTPLUG_CPU configured, disable_nonboot_cpus() is not an
+empty function but attempt to actually disable the nonboot cpus. Since
+system state is SYSTEM_POWER_OFF, play_dead() won't be called and thus
+disable_nonboot_cpus() hangs. Therefore, we make this patch to avoid
+poweroff failure.
+
+Signed-off-by: Huacai Chen <chenhc@lemote.com>
+Signed-off-by: Hongliang Tao <taohl@lemote.com>
+Signed-off-by: Hua Yan <yanh@lemote.com>
+Cc: Yong Zhang <yong.zhang@windriver.com>
+Cc: Fuxin Zhang <zhangfx@lemote.com>
+Cc: Zhangjin Wu <wuzhangjin@gmail.com>
+Patchwork: https://patchwork.linux-mips.org/patch/4211/
+Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/mips/kernel/process.c |    4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/arch/mips/kernel/process.c
++++ b/arch/mips/kernel/process.c
+@@ -72,9 +72,7 @@ void __noreturn cpu_idle(void)
+                       }
+               }
+ #ifdef CONFIG_HOTPLUG_CPU
+-              if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map) &&
+-                  (system_state == SYSTEM_RUNNING ||
+-                   system_state == SYSTEM_BOOTING))
++              if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map))
+                       play_dead();
+ #endif
+               rcu_idle_exit();
diff --git a/queue-3.4/powerpc-add-missing-null-terminator-to-avoid-boot-panic-on-ppc40x.patch b/queue-3.4/powerpc-add-missing-null-terminator-to-avoid-boot-panic-on-ppc40x.patch
new file mode 100644 (file)
index 0000000..6da14e8
--- /dev/null
@@ -0,0 +1,58 @@
+From e6449c9b2d90c1bd9a5985bf05ddebfd1631cd6b Mon Sep 17 00:00:00 2001
+From: Gabor Juhos <juhosg@openwrt.org>
+Date: Thu, 20 Dec 2012 03:44:28 +0000
+Subject: powerpc: Add missing NULL terminator to avoid boot panic on PPC40x
+
+From: Gabor Juhos <juhosg@openwrt.org>
+
+commit e6449c9b2d90c1bd9a5985bf05ddebfd1631cd6b upstream.
+
+The missing NULL terminator can cause a panic on
+PPC405 boards during boot:
+
+  Linux/PowerPC load: console=ttyS0,115200 root=/dev/mtdblock1 rootfstype=squashfs,jffs2 noinitrd init=/etc/preinit
+  Finalizing device tree... flat tree at 0x6a5160
+  bootconsole [udbg0] enabled
+  Page fault in user mode with in_atomic() = 1 mm = (null)
+  NIP = c0275f50  MSR = fffffffe
+  Oops: Weird page fault, sig: 11 [#1]
+  PowerPC 40x Platform
+  Modules linked in:
+  NIP: c0275f50 LR: c0275f60 CTR: c0280000
+  REGS: c0275eb0 TRAP: 636f7265   Not tainted  (3.7.1)
+  MSR: fffffffe <VEC,VSX,EE,PR,FP,ME,SE,BE,IR,DR,PMM,RI> CR: c06a6190  XER: 00000001
+  TASK = c02662a8[0] 'swapper' THREAD: c0274000
+  GPR00: c0275ec0 c000c658 c027c4bf 00000000 c0275ee0 c000a0ec c020a1a8 c020a1f0
+  GPR08: c020f631 c020f404 c025f078 c025f080 c0275f10
+   Call Trace:
+   ---[ end trace 31fd0ba7d8756001 ]---
+
+  Kernel panic - not syncing: Attempted to kill the idle task!
+
+The panic happens since commit 9597abe00c1bab2aedce6b49866bf6d1e81c9eed
+(sections: fix section conflicts in arch/powerpc), however the root
+cause of this is that the NULL terminator were not added in commit
+a4f740cf33f7f6c164bbde3c0cdbcc77b0c4997c (of/flattree: Add of_flat_dt_match()
+helper function).
+
+Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+Cc: Grant Likely <grant.likely@secretlab.ca>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/platforms/40x/ppc40x_simple.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/platforms/40x/ppc40x_simple.c
++++ b/arch/powerpc/platforms/40x/ppc40x_simple.c
+@@ -57,7 +57,8 @@ static const char *board[] __initdata =
+       "amcc,makalu",
+       "apm,klondike",
+       "est,hotfoot",
+-      "plathome,obs600"
++      "plathome,obs600",
++      NULL
+ };
+ static int __init ppc40x_probe(void)
diff --git a/queue-3.4/powerpc-fix-config_relocatable-y-config_crash_dump-n-build.patch b/queue-3.4/powerpc-fix-config_relocatable-y-config_crash_dump-n-build.patch
new file mode 100644 (file)
index 0000000..74b4f78
--- /dev/null
@@ -0,0 +1,33 @@
+From 11ee7e99f35ecb15f59b21da6a82d96d2cd3fcc8 Mon Sep 17 00:00:00 2001
+From: Anton Blanchard <anton@samba.org>
+Date: Sun, 11 Nov 2012 19:01:05 +0000
+Subject: powerpc: Fix CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n build
+
+From: Anton Blanchard <anton@samba.org>
+
+commit 11ee7e99f35ecb15f59b21da6a82d96d2cd3fcc8 upstream.
+
+If we build a kernel with CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n,
+the kernel fails when we run at a non zero offset. It turns out
+we were incorrectly wrapping some of the relocatable kernel code
+with CONFIG_CRASH_DUMP.
+
+Signed-off-by: Anton Blanchard <anton@samba.org>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/kernel/head_64.S |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/powerpc/kernel/head_64.S
++++ b/arch/powerpc/kernel/head_64.S
+@@ -422,7 +422,7 @@ _STATIC(__after_prom_start)
+       tovirt(r6,r6)                   /* on booke, we already run at PAGE_OFFSET */
+ #endif
+-#ifdef CONFIG_CRASH_DUMP
++#ifdef CONFIG_RELOCATABLE
+ /*
+  * Check if the kernel has to be running as relocatable kernel based on the
+  * variable __run_at_load, if it is set the kernel is treated as relocatable
diff --git a/queue-3.4/powerpc-vdso-remove-redundant-locking-in-update_vsyscall_tz.patch b/queue-3.4/powerpc-vdso-remove-redundant-locking-in-update_vsyscall_tz.patch
new file mode 100644 (file)
index 0000000..21a1565
--- /dev/null
@@ -0,0 +1,65 @@
+From ce73ec6db47af84d1466402781ae0872a9e7873c Mon Sep 17 00:00:00 2001
+From: Shan Hai <shan.hai@windriver.com>
+Date: Thu, 8 Nov 2012 15:57:49 +0000
+Subject: powerpc/vdso: Remove redundant locking in update_vsyscall_tz()
+
+From: Shan Hai <shan.hai@windriver.com>
+
+commit ce73ec6db47af84d1466402781ae0872a9e7873c upstream.
+
+The locking in update_vsyscall_tz() is not only unnecessary because the vdso
+code copies the data unproteced in __kernel_gettimeofday() but also
+introduces a hard to reproduce race condition between update_vsyscall()
+and update_vsyscall_tz(), which causes user space process to loop
+forever in vdso code.
+
+The following patch removes the locking from update_vsyscall_tz().
+
+Locking is not only unnecessary because the vdso code copies the data
+unprotected in __kernel_gettimeofday() but also erroneous because updating
+the tb_update_count is not atomic and introduces a hard to reproduce race
+condition between update_vsyscall() and update_vsyscall_tz(), which further
+causes user space process to loop forever in vdso code.
+
+The below scenario describes the race condition,
+x==0   Boot CPU                        other CPU
+       proc_P: x==0
+           timer interrupt
+               update_vsyscall
+x==1               x++;sync            settimeofday
+                                           update_vsyscall_tz
+x==2                                           x++;sync
+x==3               sync;x++
+                                               sync;x++
+       proc_P: x==3 (loops until x becomes even)
+
+Because the ++ operator would be implemented as three instructions and not
+atomic on powerpc.
+
+A similar change was made for x86 in commit 6c260d58634
+("x86: vdso: Remove bogus locking in update_vsyscall_tz")
+
+Signed-off-by: Shan Hai <shan.hai@windriver.com>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/kernel/time.c |    5 -----
+ 1 file changed, 5 deletions(-)
+
+--- a/arch/powerpc/kernel/time.c
++++ b/arch/powerpc/kernel/time.c
+@@ -749,13 +749,8 @@ void update_vsyscall(struct timespec *wa
+ void update_vsyscall_tz(void)
+ {
+-      /* Make userspace gettimeofday spin until we're done. */
+-      ++vdso_data->tb_update_count;
+-      smp_mb();
+       vdso_data->tz_minuteswest = sys_tz.tz_minuteswest;
+       vdso_data->tz_dsttime = sys_tz.tz_dsttime;
+-      smp_mb();
+-      ++vdso_data->tb_update_count;
+ }
+ static void __init clocksource_init(void)
diff --git a/queue-3.4/regulator-wm831x-set-the-new-rather-than-old-value-for-dvs-vsel.patch b/queue-3.4/regulator-wm831x-set-the-new-rather-than-old-value-for-dvs-vsel.patch
new file mode 100644 (file)
index 0000000..7608556
--- /dev/null
@@ -0,0 +1,28 @@
+From 13ae633cf729b0ecb677b75b04886ff8fada8fad Mon Sep 17 00:00:00 2001
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Date: Tue, 20 Nov 2012 10:02:06 +0900
+Subject: regulator: wm831x: Set the new rather than old value for DVS VSEL
+
+From: Mark Brown <broonie@opensource.wolfsonmicro.com>
+
+commit 13ae633cf729b0ecb677b75b04886ff8fada8fad upstream.
+
+Reported-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/wm831x-dcdc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/regulator/wm831x-dcdc.c
++++ b/drivers/regulator/wm831x-dcdc.c
+@@ -330,7 +330,7 @@ static int wm831x_buckv_set_voltage(stru
+       if (vsel > dcdc->dvs_vsel) {
+               ret = wm831x_set_bits(wm831x, dvs_reg,
+                                     WM831X_DC1_DVS_VSEL_MASK,
+-                                    dcdc->dvs_vsel);
++                                    vsel);
+               if (ret == 0)
+                       dcdc->dvs_vsel = vsel;
+               else
diff --git a/queue-3.4/s390-cio-fix-pgid-reserved-check.patch b/queue-3.4/s390-cio-fix-pgid-reserved-check.patch
new file mode 100644 (file)
index 0000000..a1c206c
--- /dev/null
@@ -0,0 +1,78 @@
+From d99e79ec5574fc556c988f613ed6175f6de66f4a Mon Sep 17 00:00:00 2001
+From: Sebastian Ott <sebott@linux.vnet.ibm.com>
+Date: Fri, 30 Nov 2012 16:48:59 +0100
+Subject: s390/cio: fix pgid reserved check
+
+From: Sebastian Ott <sebott@linux.vnet.ibm.com>
+
+commit d99e79ec5574fc556c988f613ed6175f6de66f4a upstream.
+
+The check to whom a device is reserved is done by checking the path
+state of the affected channel paths. If it turns out that one path is
+flagged as reserved by someone else the whole device is marked as such.
+
+However the meaning of the RESVD_ELSE bit is that the addressed device
+is reserved to a different pathgroup (and not reserved to a different
+LPAR). If we do this test on a path which is currently not a member of
+the pathgroup we could erroneously mark the device as reserved to
+someone else.
+
+To fix this collect the reserved state for all potential members of the
+pathgroup and only mark the device as reserved if all of those potential
+members have the RESVD_ELSE bit set.
+
+Acked-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
+Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/s390/cio/device_pgid.c |   10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/s390/cio/device_pgid.c
++++ b/drivers/s390/cio/device_pgid.c
+@@ -234,7 +234,7 @@ static int pgid_cmp(struct pgid *p1, str
+  * Determine pathgroup state from PGID data.
+  */
+ static void pgid_analyze(struct ccw_device *cdev, struct pgid **p,
+-                       int *mismatch, int *reserved, u8 *reset)
++                       int *mismatch, u8 *reserved, u8 *reset)
+ {
+       struct pgid *pgid = &cdev->private->pgid[0];
+       struct pgid *first = NULL;
+@@ -248,7 +248,7 @@ static void pgid_analyze(struct ccw_devi
+               if ((cdev->private->pgid_valid_mask & lpm) == 0)
+                       continue;
+               if (pgid->inf.ps.state2 == SNID_STATE2_RESVD_ELSE)
+-                      *reserved = 1;
++                      *reserved |= lpm;
+               if (pgid_is_reset(pgid)) {
+                       *reset |= lpm;
+                       continue;
+@@ -316,14 +316,14 @@ static void snid_done(struct ccw_device
+       struct subchannel *sch = to_subchannel(cdev->dev.parent);
+       struct pgid *pgid;
+       int mismatch = 0;
+-      int reserved = 0;
++      u8 reserved = 0;
+       u8 reset = 0;
+       u8 donepm;
+       if (rc)
+               goto out;
+       pgid_analyze(cdev, &pgid, &mismatch, &reserved, &reset);
+-      if (reserved)
++      if (reserved == cdev->private->pgid_valid_mask)
+               rc = -EUSERS;
+       else if (mismatch)
+               rc = -EOPNOTSUPP;
+@@ -336,7 +336,7 @@ static void snid_done(struct ccw_device
+       }
+ out:
+       CIO_MSG_EVENT(2, "snid: device 0.%x.%04x: rc=%d pvm=%02x vpm=%02x "
+-                    "todo=%02x mism=%d rsvd=%d reset=%02x\n", id->ssid,
++                    "todo=%02x mism=%d rsvd=%02x reset=%02x\n", id->ssid,
+                     id->devno, rc, cdev->private->pgid_valid_mask, sch->vpm,
+                     cdev->private->pgid_todo_mask, mismatch, reserved, reset);
+       switch (rc) {
diff --git a/queue-3.4/series b/queue-3.4/series
new file mode 100644 (file)
index 0000000..e33c822
--- /dev/null
@@ -0,0 +1,9 @@
+regulator-wm831x-set-the-new-rather-than-old-value-for-dvs-vsel.patch
+ath5k-fix-tx-path-skb-leaks.patch
+bcma-mips-fix-clearing-device-irq.patch
+powerpc-fix-config_relocatable-y-config_crash_dump-n-build.patch
+powerpc-vdso-remove-redundant-locking-in-update_vsyscall_tz.patch
+powerpc-add-missing-null-terminator-to-avoid-boot-panic-on-ppc40x.patch
+kvm-fix-user-memslot-overlap-check.patch
+s390-cio-fix-pgid-reserved-check.patch
+mips-fix-poweroff-failure-when-hotplug_cpu-configured.patch