]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.32 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 11 Aug 2010 00:32:02 +0000 (17:32 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 11 Aug 2010 00:32:02 +0000 (17:32 -0700)
queue-2.6.32/drivers-video-w100fb.c-ignore-void-return-value-fix-build-failure.patch [new file with mode: 0644]
queue-2.6.32/ide-cd-do-not-access-completed-requests-in-the-irq-handler.patch [new file with mode: 0644]
queue-2.6.32/md-raid10-fix-deadlock-with-unaligned-read-during-resync.patch [new file with mode: 0644]
queue-2.6.32/mm-fix-corruption-of-hibernation-caused-by-reusing-swap-during-image-saving.patch [new file with mode: 0644]
queue-2.6.32/pci-disable-msi-on-via-k8m800.patch [new file with mode: 0644]
queue-2.6.32/pci-do-not-run-nvidia-quirks-related-to-msi-with-msi-disabled.patch [new file with mode: 0644]
queue-2.6.32/series
queue-2.6.32/solos-pci-fix-race-condition-in-tasklet-rx-handling.patch [new file with mode: 0644]
queue-2.6.32/splice-fix-misuse-of-splice_f_nonblock.patch [new file with mode: 0644]
queue-2.6.32/staging-line6-needs-to-select-snd_pcm.patch [new file with mode: 0644]
queue-2.6.32/staging-panel-prevent-double-calling-of-parport_release-fix-oops.patch [new file with mode: 0644]

diff --git a/queue-2.6.32/drivers-video-w100fb.c-ignore-void-return-value-fix-build-failure.patch b/queue-2.6.32/drivers-video-w100fb.c-ignore-void-return-value-fix-build-failure.patch
new file mode 100644 (file)
index 0000000..293755a
--- /dev/null
@@ -0,0 +1,37 @@
+From fa260c00c1aa5c657793a7221e40d2400df5afd8 Mon Sep 17 00:00:00 2001
+From: Peter Huewe <peterhuewe@gmx.de>
+Date: Mon, 9 Aug 2010 17:18:23 -0700
+Subject: drivers/video/w100fb.c: ignore void return value / fix build failure
+
+From: Peter Huewe <peterhuewe@gmx.de>
+
+commit fa260c00c1aa5c657793a7221e40d2400df5afd8 upstream.
+
+Fix a build failure "error: void value not ignored as it ought to be"
+by removing an assignment of a void return value.  The functionality of
+the code is not changed.
+
+Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
+Acked-by: Henrik Kretzschmar <henne@nachtwindheim.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/video/w100fb.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/video/w100fb.c
++++ b/drivers/video/w100fb.c
+@@ -857,9 +857,9 @@ unsigned long w100fb_gpio_read(int port)
+ void w100fb_gpio_write(int port, unsigned long value)
+ {
+       if (port==W100_GPIO_PORT_A)
+-              value = writel(value, remapped_regs + mmGPIO_DATA);
++              writel(value, remapped_regs + mmGPIO_DATA);
+       else
+-              value = writel(value, remapped_regs + mmGPIO_DATA2);
++              writel(value, remapped_regs + mmGPIO_DATA2);
+ }
+ EXPORT_SYMBOL(w100fb_gpio_read);
+ EXPORT_SYMBOL(w100fb_gpio_write);
diff --git a/queue-2.6.32/ide-cd-do-not-access-completed-requests-in-the-irq-handler.patch b/queue-2.6.32/ide-cd-do-not-access-completed-requests-in-the-irq-handler.patch
new file mode 100644 (file)
index 0000000..c951ef7
--- /dev/null
@@ -0,0 +1,58 @@
+From 110712828365ccafcc61a7f4db44c31ed4cf8793 Mon Sep 17 00:00:00 2001
+From: Borislav Petkov <bp@alien8.de>
+Date: Mon, 5 Jul 2010 21:23:52 -0700
+Subject: ide-cd: Do not access completed requests in the irq handler
+
+From: Borislav Petkov <bp@alien8.de>
+
+commit 110712828365ccafcc61a7f4db44c31ed4cf8793 upstream.
+
+ide_cd_error_cmd() can complete an erroneous request with leftover
+buffers. Signal this with its return value so that the request is not
+accessed after its completion in the irq handler and we oops.
+
+Signed-off-by: Borislav Petkov <bp@alien8.de>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ide/ide-cd.c |   14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+--- a/drivers/ide/ide-cd.c
++++ b/drivers/ide/ide-cd.c
+@@ -506,15 +506,22 @@ int ide_cd_queue_pc(ide_drive_t *drive,
+       return (flags & REQ_FAILED) ? -EIO : 0;
+ }
+-static void ide_cd_error_cmd(ide_drive_t *drive, struct ide_cmd *cmd)
++/*
++ * returns true if rq has been completed
++ */
++static bool ide_cd_error_cmd(ide_drive_t *drive, struct ide_cmd *cmd)
+ {
+       unsigned int nr_bytes = cmd->nbytes - cmd->nleft;
+       if (cmd->tf_flags & IDE_TFLAG_WRITE)
+               nr_bytes -= cmd->last_xfer_len;
+-      if (nr_bytes > 0)
++      if (nr_bytes > 0) {
+               ide_complete_rq(drive, 0, nr_bytes);
++              return true;
++      }
++
++      return false;
+ }
+ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
+@@ -679,7 +686,8 @@ out_end:
+               }
+               if (uptodate == 0 && rq->bio)
+-                      ide_cd_error_cmd(drive, cmd);
++                      if (ide_cd_error_cmd(drive, cmd))
++                              return ide_stopped;
+               /* make sure it's fully ended */
+               if (blk_fs_request(rq) == 0) {
diff --git a/queue-2.6.32/md-raid10-fix-deadlock-with-unaligned-read-during-resync.patch b/queue-2.6.32/md-raid10-fix-deadlock-with-unaligned-read-during-resync.patch
new file mode 100644 (file)
index 0000000..46f1414
--- /dev/null
@@ -0,0 +1,59 @@
+From 51e9ac77035a3dfcb6fc0a88a0d80b6f99b5edb1 Mon Sep 17 00:00:00 2001
+From: NeilBrown <neilb@suse.de>
+Date: Sat, 7 Aug 2010 21:17:00 +1000
+Subject: md/raid10: fix deadlock with unaligned read during resync
+
+From: NeilBrown <neilb@suse.de>
+
+commit 51e9ac77035a3dfcb6fc0a88a0d80b6f99b5edb1 upstream.
+
+If the 'bio_split' path in raid10-read is used while
+resync/recovery is happening it is possible to deadlock.
+Fix this be elevating ->nr_waiting for the duration of both
+parts of the split request.
+
+This fixes a bug that has been present since 2.6.22
+but has only started manifesting recently for unknown reasons.
+It is suitable for and -stable since then.
+
+Reported-by:  Justin Bronder <jsbronder@gentoo.org>
+Tested-by:  Justin Bronder <jsbronder@gentoo.org>
+Signed-off-by: NeilBrown <neilb@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/md/raid10.c |   18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+--- a/drivers/md/raid10.c
++++ b/drivers/md/raid10.c
+@@ -824,11 +824,29 @@ static int make_request(struct request_q
+                */
+               bp = bio_split(bio,
+                              chunk_sects - (bio->bi_sector & (chunk_sects - 1)) );
++
++              /* Each of these 'make_request' calls will call 'wait_barrier'.
++               * If the first succeeds but the second blocks due to the resync
++               * thread raising the barrier, we will deadlock because the
++               * IO to the underlying device will be queued in generic_make_request
++               * and will never complete, so will never reduce nr_pending.
++               * So increment nr_waiting here so no new raise_barriers will
++               * succeed, and so the second wait_barrier cannot block.
++               */
++              spin_lock_irq(&conf->resync_lock);
++              conf->nr_waiting++;
++              spin_unlock_irq(&conf->resync_lock);
++
+               if (make_request(q, &bp->bio1))
+                       generic_make_request(&bp->bio1);
+               if (make_request(q, &bp->bio2))
+                       generic_make_request(&bp->bio2);
++              spin_lock_irq(&conf->resync_lock);
++              conf->nr_waiting--;
++              wake_up(&conf->wait_barrier);
++              spin_unlock_irq(&conf->resync_lock);
++
+               bio_pair_release(bp);
+               return 0;
+       bad_map:
diff --git a/queue-2.6.32/mm-fix-corruption-of-hibernation-caused-by-reusing-swap-during-image-saving.patch b/queue-2.6.32/mm-fix-corruption-of-hibernation-caused-by-reusing-swap-during-image-saving.patch
new file mode 100644 (file)
index 0000000..b36130f
--- /dev/null
@@ -0,0 +1,65 @@
+From 966cca029f739716fbcc8068b8c6dfe381f86fc3 Mon Sep 17 00:00:00 2001
+From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
+Date: Mon, 9 Aug 2010 17:20:09 -0700
+Subject: mm: fix corruption of hibernation caused by reusing swap during image saving
+
+From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
+
+commit 966cca029f739716fbcc8068b8c6dfe381f86fc3 upstream.
+
+Since 2.6.31, swap_map[]'s refcounting was changed to show that a used
+swap entry is just for swap-cache, can be reused.  Then, while scanning
+free entry in swap_map[], a swap entry may be able to be reclaimed and
+reused.  It was caused by commit c9e444103b5e7a5 ("mm: reuse unused swap
+entry if necessary").
+
+But this caused deta corruption at resume. The scenario is
+
+- Assume a clean-swap cache, but mapped.
+
+- at hibernation_snapshot[], clean-swap-cache is saved as
+  clean-swap-cache and swap_map[] is marked as SWAP_HAS_CACHE.
+
+- then, save_image() is called.  And reuse SWAP_HAS_CACHE entry to save
+  image, and break the contents.
+
+After resume:
+
+- the memory reclaim runs and finds clean-not-referenced-swap-cache and
+  discards it because it's marked as clean.  But here, the contents on
+  disk and swap-cache is inconsistent.
+
+Hance memory is corrupted.
+
+This patch avoids the bug by not reclaiming swap-entry during hibernation.
+This is a quick fix for backporting.
+
+Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
+Cc: Rafael J. Wysocki <rjw@sisk.pl>
+Reported-by: Ondreg Zary <linux@rainbow-software.org>
+Tested-by: Ondreg Zary <linux@rainbow-software.org>
+Tested-by: Andrea Gelmini <andrea.gelmini@gmail.com>
+Acked-by: Hugh Dickins <hughd@google.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ mm/swapfile.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/mm/swapfile.c
++++ b/mm/swapfile.c
+@@ -330,8 +330,10 @@ checks:
+       if (offset > si->highest_bit)
+               scan_base = offset = si->lowest_bit;
+-      /* reuse swap entry of cache-only swap if not busy. */
+-      if (vm_swap_full() && si->swap_map[offset] == SWAP_HAS_CACHE) {
++      /* reuse swap entry of cache-only swap if not hibernation. */
++      if (vm_swap_full()
++              && usage == SWAP_HAS_CACHE
++              && si->swap_map[offset] == SWAP_HAS_CACHE) {
+               int swap_was_freed;
+               spin_unlock(&swap_lock);
+               swap_was_freed = __try_to_reclaim_swap(si, offset);
diff --git a/queue-2.6.32/pci-disable-msi-on-via-k8m800.patch b/queue-2.6.32/pci-disable-msi-on-via-k8m800.patch
new file mode 100644 (file)
index 0000000..d6befc3
--- /dev/null
@@ -0,0 +1,33 @@
+From 549e15611b4ac1de51ef0e0a79c2704f50a638a2 Mon Sep 17 00:00:00 2001
+From: Tejun Heo <tj@kernel.org>
+Date: Sun, 23 May 2010 10:22:55 +0200
+Subject: PCI: disable MSI on VIA K8M800
+
+From: Tejun Heo <tj@kernel.org>
+
+commit 549e15611b4ac1de51ef0e0a79c2704f50a638a2 upstream.
+
+MSI delivery from on-board ahci controller doesn't work on K8M800.  At
+this point, it's unclear whether the culprit is with the ahci
+controller or the host bridge.  Given the track record and considering
+the rather minimal impact of MSI, disabling it seems reasonable.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Reported-by: Rainer Hurtado Navarro <publio.escipion.el.africano@gmail.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -2084,6 +2084,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3336, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8380_0, quirk_disable_all_msi);
+ /* Disable MSI on chipsets that are known to not support it */
+ static void __devinit quirk_disable_msi(struct pci_dev *dev)
diff --git a/queue-2.6.32/pci-do-not-run-nvidia-quirks-related-to-msi-with-msi-disabled.patch b/queue-2.6.32/pci-do-not-run-nvidia-quirks-related-to-msi-with-msi-disabled.patch
new file mode 100644 (file)
index 0000000..cdfed79
--- /dev/null
@@ -0,0 +1,38 @@
+From 3d2a531804d16cd8df6dbbb0429c6f143e756049 Mon Sep 17 00:00:00 2001
+From: Rafael J. Wysocki <rjw@sisk.pl>
+Date: Fri, 23 Jul 2010 22:19:55 +0200
+Subject: PCI: Do not run NVidia quirks related to MSI with MSI disabled
+
+From: Rafael J. Wysocki <rjw@sisk.pl>
+
+commit 3d2a531804d16cd8df6dbbb0429c6f143e756049 upstream.
+
+There is no reason to run NVidia-specific quirks related to HT MSI
+mappings with MSI disabled via pci=nomsi, so make
+__nv_msi_ht_cap_quirk() return immediately in that case.
+
+This allows at least one machine to boot 100% of the time with
+pci=nomsi (it still doesn't boot reliably without that).
+
+Addresses https://bugzilla.kernel.org/show_bug.cgi?id=16443 .
+
+Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -2356,6 +2356,9 @@ static void __devinit __nv_msi_ht_cap_qu
+       int pos;
+       int found;
++      if (!pci_msi_enabled())
++              return;
++
+       /* check if there is HT MSI cap or enabled on this device */
+       found = ht_check_msi_mapping(dev);
index f83bc0830bcf4444db7b6df8409640d85cc0daaa..cf5f850cc5d554616d217824b8e923d06f663b21 100644 (file)
@@ -3,3 +3,13 @@ powerpc-fix-build-with-make-3.82.patch
 nvram-fix-write-beyond-end-condition-prove-to-gcc-copy-is-safe.patch
 x86-add-memory-modify-constraints-to-xchg-and-cmpxchg.patch
 x86-vmware-preset-lpj-values-when-on-vmware.patch
+staging-line6-needs-to-select-snd_pcm.patch
+staging-panel-prevent-double-calling-of-parport_release-fix-oops.patch
+pci-do-not-run-nvidia-quirks-related-to-msi-with-msi-disabled.patch
+pci-disable-msi-on-via-k8m800.patch
+solos-pci-fix-race-condition-in-tasklet-rx-handling.patch
+splice-fix-misuse-of-splice_f_nonblock.patch
+mm-fix-corruption-of-hibernation-caused-by-reusing-swap-during-image-saving.patch
+drivers-video-w100fb.c-ignore-void-return-value-fix-build-failure.patch
+ide-cd-do-not-access-completed-requests-in-the-irq-handler.patch
+md-raid10-fix-deadlock-with-unaligned-read-during-resync.patch
diff --git a/queue-2.6.32/solos-pci-fix-race-condition-in-tasklet-rx-handling.patch b/queue-2.6.32/solos-pci-fix-race-condition-in-tasklet-rx-handling.patch
new file mode 100644 (file)
index 0000000..d8db65a
--- /dev/null
@@ -0,0 +1,66 @@
+From 1f6ea6e511e5ec730d8e88651da1b7b6e8fd1333 Mon Sep 17 00:00:00 2001
+From: David Woodhouse <David.Woodhouse@intel.com>
+Date: Sat, 7 Aug 2010 23:02:59 -0700
+Subject: solos-pci: Fix race condition in tasklet RX handling
+
+From: David Woodhouse <David.Woodhouse@intel.com>
+
+commit 1f6ea6e511e5ec730d8e88651da1b7b6e8fd1333 upstream.
+
+We were seeing faults in the solos-pci receive tasklet when packets
+arrived for a VCC which was currently being closed:
+
+[18842.727906] EIP: [<e082f490>] br2684_push+0x19/0x234 [br2684] SS:ESP 0068:dfb89d14
+
+[18845.090712] [<c13ecff3>] ? do_page_fault+0x0/0x2e1
+[18845.120042] [<e082f490>] ? br2684_push+0x19/0x234 [br2684]
+[18845.153530] [<e084fa13>] solos_bh+0x28b/0x7c8 [solos_pci]
+[18845.186488] [<e084f711>] ? solos_irq+0x2d/0x51 [solos_pci]
+[18845.219960] [<c100387b>] ? handle_irq+0x3b/0x48
+[18845.247732] [<c10265cb>] ? irq_exit+0x34/0x57
+[18845.274437] [<c1025720>] tasklet_action+0x42/0x69
+[18845.303247] [<c102643f>] __do_softirq+0x8e/0x129
+[18845.331540] [<c10264ff>] do_softirq+0x25/0x2a
+[18845.358274] [<c102664c>] _local_bh_enable_ip+0x5e/0x6a
+[18845.389677] [<c102666d>] local_bh_enable+0xb/0xe
+[18845.417944] [<e08490a8>] ppp_unregister_channel+0x32/0xbb [ppp_generic]
+[18845.458193] [<e08731ad>] pppox_unbind_sock+0x18/0x1f [pppox]
+
+This patch uses an RCU-inspired approach to fix it. In the RX tasklet's
+find_vcc() function we first refuse to use a VCC which already has the
+ATM_VF_READY bit cleared. And in the VCC close function, we synchronise
+with the tasklet to ensure that it can't still be using the VCC before
+we continue and allow the VCC to be destroyed.
+
+Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
+Tested-by: Nathan Williams <nathan@traverse.com.au>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/atm/solos-pci.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/atm/solos-pci.c
++++ b/drivers/atm/solos-pci.c
+@@ -774,7 +774,8 @@ static struct atm_vcc *find_vcc(struct a
+       sk_for_each(s, node, head) {
+               vcc = atm_sk(s);
+               if (vcc->dev == dev && vcc->vci == vci &&
+-                  vcc->vpi == vpi && vcc->qos.rxtp.traffic_class != ATM_NONE)
++                  vcc->vpi == vpi && vcc->qos.rxtp.traffic_class != ATM_NONE &&
++                  test_bit(ATM_VF_READY, &vcc->flags))
+                       goto out;
+       }
+       vcc = NULL;
+@@ -900,6 +901,10 @@ static void pclose(struct atm_vcc *vcc)
+       clear_bit(ATM_VF_ADDR, &vcc->flags);
+       clear_bit(ATM_VF_READY, &vcc->flags);
++      /* Hold up vcc_destroy_socket() (our caller) until solos_bh() in the
++         tasklet has finished processing any incoming packets (and, more to
++         the point, using the vcc pointer). */
++      tasklet_unlock_wait(&card->tlet);
+       return;
+ }
diff --git a/queue-2.6.32/splice-fix-misuse-of-splice_f_nonblock.patch b/queue-2.6.32/splice-fix-misuse-of-splice_f_nonblock.patch
new file mode 100644 (file)
index 0000000..50f1d98
--- /dev/null
@@ -0,0 +1,50 @@
+From 6965031d331a642e31278fa1b5bd47f372ffdd5d Mon Sep 17 00:00:00 2001
+From: Miklos Szeredi <miklos@szeredi.hu>
+Date: Tue, 3 Aug 2010 12:48:50 +0200
+Subject: splice: fix misuse of SPLICE_F_NONBLOCK
+
+From: Miklos Szeredi <miklos@szeredi.hu>
+
+commit 6965031d331a642e31278fa1b5bd47f372ffdd5d upstream.
+
+SPLICE_F_NONBLOCK is clearly documented to only affect blocking on the
+pipe.  In __generic_file_splice_read(), however, it causes an EAGAIN
+if the page is currently being read.
+
+This makes it impossible to write an application that only wants
+failure if the pipe is full.  For example if the same process is
+handling both ends of a pipe and isn't otherwise able to determine
+whether a splice to the pipe will fill it or not.
+
+We could make the read non-blocking on O_NONBLOCK or some other splice
+flag, but for now this is the simplest fix.
+
+Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
+Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/splice.c |   12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -365,17 +365,7 @@ __generic_file_splice_read(struct file *
+                * If the page isn't uptodate, we may need to start io on it
+                */
+               if (!PageUptodate(page)) {
+-                      /*
+-                       * If in nonblock mode then dont block on waiting
+-                       * for an in-flight io page
+-                       */
+-                      if (flags & SPLICE_F_NONBLOCK) {
+-                              if (!trylock_page(page)) {
+-                                      error = -EAGAIN;
+-                                      break;
+-                              }
+-                      } else
+-                              lock_page(page);
++                      lock_page(page);
+                       /*
+                        * Page was truncated, or invalidated by the
diff --git a/queue-2.6.32/staging-line6-needs-to-select-snd_pcm.patch b/queue-2.6.32/staging-line6-needs-to-select-snd_pcm.patch
new file mode 100644 (file)
index 0000000..5497bb2
--- /dev/null
@@ -0,0 +1,39 @@
+From e928c077e5cdcd72ee762125b37232aec1ff49f3 Mon Sep 17 00:00:00 2001
+From: Randy Dunlap <randy.dunlap@oracle.com>
+Date: Tue, 27 Jul 2010 12:21:19 -0700
+Subject: Staging: line6: needs to select SND_PCM
+
+From: Randy Dunlap <randy.dunlap@oracle.com>
+
+commit e928c077e5cdcd72ee762125b37232aec1ff49f3 upstream.
+
+line6 uses snd_pcm*() functions, so it should select SND_PCM.
+
+ERROR: "snd_pcm_period_elapsed" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_set_ops" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_lib_free_pages" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_lib_ioctl" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_lib_malloc_pages" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_hw_constraint_ratdens" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_format_physical_width" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_lib_preallocate_pages_for_all" [drivers/staging/line6/line6usb.ko] undefined!
+ERROR: "snd_pcm_new" [drivers/staging/line6/line6usb.ko] undefined!
+
+Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
+Cc: Markus Grabner <grabner@icg.tugraz.at>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/line6/Kconfig |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/staging/line6/Kconfig
++++ b/drivers/staging/line6/Kconfig
+@@ -2,6 +2,7 @@ config LINE6_USB
+       tristate "Line6 USB support"
+       depends on USB && SND
+       select SND_RAWMIDI
++      select SND_PCM
+       help
+         This is a driver for the guitar amp, cab, and effects modeller
+         PODxt Pro by Line6 (and similar devices), supporting the
diff --git a/queue-2.6.32/staging-panel-prevent-double-calling-of-parport_release-fix-oops.patch b/queue-2.6.32/staging-panel-prevent-double-calling-of-parport_release-fix-oops.patch
new file mode 100644 (file)
index 0000000..0593744
--- /dev/null
@@ -0,0 +1,43 @@
+From 060132ae42cce3f9d2fd34d9a17b98362b44b9f9 Mon Sep 17 00:00:00 2001
+From: Peter Huewe <peterhuewe@gmx.de>
+Date: Wed, 7 Jul 2010 04:52:16 +0200
+Subject: Staging: panel: Prevent double-calling of parport_release - fix oops.
+
+From: Peter Huewe <peterhuewe@gmx.de>
+
+commit 060132ae42cce3f9d2fd34d9a17b98362b44b9f9 upstream.
+
+This patch prevents the code from calling parport_release and
+parport_unregister_device twice with the same arguments - and thus fixes an oops.
+
+Rationale:
+After the first call the parport is already released and the
+handle isn't valid anymore and calling parport_release and
+parport_unregister_device twice isn't a good idea.
+
+Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
+Acked-by: Willy Tarreau <w@1wt.eu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/panel/panel.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/staging/panel/panel.c
++++ b/drivers/staging/panel/panel.c
+@@ -2181,6 +2181,7 @@ int panel_init(void)
+               if (pprt) {
+                       parport_release(pprt);
+                       parport_unregister_device(pprt);
++                      pprt = NULL;
+               }
+               parport_unregister_driver(&panel_driver);
+               printk(KERN_ERR "Panel driver version " PANEL_VERSION
+@@ -2230,6 +2231,7 @@ static void __exit panel_cleanup_module(
+               /* TODO: free all input signals */
+               parport_release(pprt);
+               parport_unregister_device(pprt);
++              pprt = NULL;
+       }
+       parport_unregister_driver(&panel_driver);
+ }