]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
more .25 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Fri, 13 Jun 2008 21:15:49 +0000 (14:15 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 13 Jun 2008 21:15:49 +0000 (14:15 -0700)
queue-2.6.25/bttv-fix-a-deadlock-in-the-bttv-driver.patch [new file with mode: 0644]
queue-2.6.25/cifs-fix-oops-on-mount-when-config_cifs_dfs_upcall-is-enabled.patch [new file with mode: 0644]
queue-2.6.25/cpufreq-fix-format-string-bug.patch [new file with mode: 0644]
queue-2.6.25/kconfig-introduce-arch_defconfig-to-defconfig_list.patch [new file with mode: 0644]
queue-2.6.25/m68k-add-ext2_find_-first-next-_bit-for-ext4.patch [new file with mode: 0644]
queue-2.6.25/serial-fix-enable_irq_wake-disable_irq_wake-imbalance-in-serial_core.c.patch [new file with mode: 0644]
queue-2.6.25/series

diff --git a/queue-2.6.25/bttv-fix-a-deadlock-in-the-bttv-driver.patch b/queue-2.6.25/bttv-fix-a-deadlock-in-the-bttv-driver.patch
new file mode 100644 (file)
index 0000000..d72b42e
--- /dev/null
@@ -0,0 +1,78 @@
+From 81b2dbcad86732ffc02bad87aa25c4651199fc77 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Tue, 20 May 2008 09:53:52 -0700
+Subject: bttv: Fix a deadlock in the bttv driver
+
+From: Arjan van de Ven <arjan@linux.intel.com>
+
+commit 81b2dbcad86732ffc02bad87aa25c4651199fc77 in mainline.
+
+vidiocgmbuf() does this:
+        mutex_lock(&fh->cap.vb_lock);
+        retval = videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize,
+                                     V4L2_MEMORY_MMAP);
+
+and videobuf_mmap_setup() then just does
+        mutex_lock(&q->vb_lock);
+        ret = __videobuf_mmap_setup(q, bcount, bsize, memory);
+        mutex_unlock(&q->vb_lock);
+
+which is an obvious double-take deadlock.
+
+This patch fixes this by having vidiocgmbuf() just call the
+__videobuf_mmap_setup function instead.
+
+Acked-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Reported-by: Koos Vriezen <koos.vriezen@gmail.com>
+Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/bt8xx/bttv-driver.c |    2 +-
+ drivers/media/video/videobuf-core.c     |    3 ++-
+ include/media/videobuf-core.h           |    3 +++
+ 3 files changed, 6 insertions(+), 2 deletions(-)
+
+--- a/drivers/media/video/bt8xx/bttv-driver.c
++++ b/drivers/media/video/bt8xx/bttv-driver.c
+@@ -2613,7 +2613,7 @@ static int vidiocgmbuf(struct file *file
+       struct bttv_fh *fh = priv;
+       mutex_lock(&fh->cap.vb_lock);
+-      retval = videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize,
++      retval = __videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize,
+                                    V4L2_MEMORY_MMAP);
+       if (retval < 0) {
+               mutex_unlock(&fh->cap.vb_lock);
+--- a/drivers/media/video/videobuf-core.c
++++ b/drivers/media/video/videobuf-core.c
+@@ -335,7 +335,7 @@ int videobuf_mmap_free(struct videobuf_q
+ }
+ /* Locking: Caller holds q->vb_lock */
+-static int __videobuf_mmap_setup(struct videobuf_queue *q,
++int __videobuf_mmap_setup(struct videobuf_queue *q,
+                       unsigned int bcount, unsigned int bsize,
+                       enum v4l2_memory memory)
+ {
+@@ -1093,6 +1093,7 @@ EXPORT_SYMBOL_GPL(videobuf_read_stream);
+ EXPORT_SYMBOL_GPL(videobuf_read_one);
+ EXPORT_SYMBOL_GPL(videobuf_poll_stream);
++EXPORT_SYMBOL_GPL(__videobuf_mmap_setup);
+ EXPORT_SYMBOL_GPL(videobuf_mmap_setup);
+ EXPORT_SYMBOL_GPL(videobuf_mmap_free);
+ EXPORT_SYMBOL_GPL(videobuf_mmap_mapper);
+--- a/include/media/videobuf-core.h
++++ b/include/media/videobuf-core.h
+@@ -227,6 +227,9 @@ unsigned int videobuf_poll_stream(struct
+ int videobuf_mmap_setup(struct videobuf_queue *q,
+                       unsigned int bcount, unsigned int bsize,
+                       enum v4l2_memory memory);
++int __videobuf_mmap_setup(struct videobuf_queue *q,
++                      unsigned int bcount, unsigned int bsize,
++                      enum v4l2_memory memory);
+ int videobuf_mmap_free(struct videobuf_queue *q);
+ int videobuf_mmap_mapper(struct videobuf_queue *q,
+                        struct vm_area_struct *vma);
diff --git a/queue-2.6.25/cifs-fix-oops-on-mount-when-config_cifs_dfs_upcall-is-enabled.patch b/queue-2.6.25/cifs-fix-oops-on-mount-when-config_cifs_dfs_upcall-is-enabled.patch
new file mode 100644 (file)
index 0000000..5a6726e
--- /dev/null
@@ -0,0 +1,59 @@
+From 79ee9a8b2d328243488fee8b55bfacc822049a2a Mon Sep 17 00:00:00 2001
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+Date: Tue, 10 Jun 2008 21:37:02 +0000
+Subject: cifs: fix oops on mount when CONFIG_CIFS_DFS_UPCALL is enabled
+Message-ID: <20080607190055.GA5726@joi>
+
+From: Marcin Slusarz <marcin.slusarz@gmail.com>
+
+simple "mount -t cifs //xxx /mnt" oopsed on strlen of options
+http://kerneloops.org/guilty.php?guilty=cifs_get_sb&version=2.6.25-release&start=16711 \
+68&end=1703935&class=oops
+
+Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
+Acked-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/cifsfs.c |   21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+--- a/fs/cifs/cifsfs.c
++++ b/fs/cifs/cifsfs.c
+@@ -97,9 +97,6 @@ cifs_read_super(struct super_block *sb, 
+ {
+       struct inode *inode;
+       struct cifs_sb_info *cifs_sb;
+-#ifdef CONFIG_CIFS_DFS_UPCALL
+-      int len;
+-#endif
+       int rc = 0;
+       /* BB should we make this contingent on mount parm? */
+@@ -117,15 +114,17 @@ cifs_read_super(struct super_block *sb, 
+        * complex operation (mount), and in case of fail
+        * just exit instead of doing mount and attempting
+        * undo it if this copy fails?*/
+-      len = strlen(data);
+-      cifs_sb->mountdata = kzalloc(len + 1, GFP_KERNEL);
+-      if (cifs_sb->mountdata == NULL) {
+-              kfree(sb->s_fs_info);
+-              sb->s_fs_info = NULL;
+-              return -ENOMEM;
++      if (data) {
++              int len = strlen(data);
++              cifs_sb->mountdata = kzalloc(len + 1, GFP_KERNEL);
++              if (cifs_sb->mountdata == NULL) {
++                      kfree(sb->s_fs_info);
++                      sb->s_fs_info = NULL;
++                      return -ENOMEM;
++              }
++              strncpy(cifs_sb->mountdata, data, len + 1);
++              cifs_sb->mountdata[len] = '\0';
+       }
+-      strncpy(cifs_sb->mountdata, data, len + 1);
+-      cifs_sb->mountdata[len] = '\0';
+ #endif
+       rc = cifs_mount(sb, cifs_sb, data, devname);
diff --git a/queue-2.6.25/cpufreq-fix-format-string-bug.patch b/queue-2.6.25/cpufreq-fix-format-string-bug.patch
new file mode 100644 (file)
index 0000000..117acc1
--- /dev/null
@@ -0,0 +1,32 @@
+From 326f6a5c9c9e1a62aec37bdc0c3f8d53adabe77b Mon Sep 17 00:00:00 2001
+From: Chris Wright <chrisw@sous-sol.org>
+Date: Fri, 6 Jun 2008 21:26:02 -0700
+Subject: CPUFREQ: Fix format string bug.
+
+From: Chris Wright <chrisw@sous-sol.org>
+
+commit 326f6a5c9c9e1a62aec37bdc0c3f8d53adabe77b upstream
+
+Format string bug.  Not exploitable, as this is only writable by root,
+but worth fixing all the same.
+
+From: Chris Wright <chrisw@sous-sol.org>
+Spotted-by: Ilja van Sprundel <ilja@netric.org>
+Signed-off-by: Dave Jones <davej@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/cpufreq/cpufreq.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/cpufreq/cpufreq.c
++++ b/drivers/cpufreq/cpufreq.c
+@@ -410,7 +410,7 @@ static int cpufreq_parse_governor (char 
+                               int ret;
+                               mutex_unlock(&cpufreq_governor_mutex);
+-                              ret = request_module(name);
++                              ret = request_module("%s", name);
+                               mutex_lock(&cpufreq_governor_mutex);
+                               if (ret == 0)
diff --git a/queue-2.6.25/kconfig-introduce-arch_defconfig-to-defconfig_list.patch b/queue-2.6.25/kconfig-introduce-arch_defconfig-to-defconfig_list.patch
new file mode 100644 (file)
index 0000000..f851a9f
--- /dev/null
@@ -0,0 +1,64 @@
+From 73531905ed53576d9e8707659a761e7046a60497 Mon Sep 17 00:00:00 2001
+From: Sam Ravnborg <sam@ravnborg.org>
+Date: Sun, 25 May 2008 23:03:18 +0200
+Subject: Kconfig: introduce ARCH_DEFCONFIG to DEFCONFIG_LIST
+
+From: Sam Ravnborg <sam@ravnborg.org>
+
+commit 73531905ed53576d9e8707659a761e7046a60497 in mainline.
+
+init/Kconfig contains a list of configs that are searched
+for if 'make *config' are used with no .config present.
+Extend this list to look at the config identified by
+ARCH_DEFCONFIG.
+
+With this change we now try the defconfig targets last.
+
+This fixes a regression reported
+by: Linus Torvalds <torvalds@linux-foundation.org>
+
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: "H. Peter Anvin" <hpa@zytor.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/Kconfig |   13 +++----------
+ init/Kconfig     |    1 +
+ 2 files changed, 4 insertions(+), 10 deletions(-)
+
+--- a/arch/x86/Kconfig
++++ b/arch/x86/Kconfig
+@@ -24,17 +24,10 @@ config X86
+       select HAVE_KRETPROBES
+       select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64)
+-config DEFCONFIG_LIST
++config ARCH_DEFCONFIG
+       string
+-      depends on X86_32
+-      option defconfig_list
+-      default "arch/x86/configs/i386_defconfig"
+-
+-config DEFCONFIG_LIST
+-      string
+-      depends on X86_64
+-      option defconfig_list
+-      default "arch/x86/configs/x86_64_defconfig"
++      default "arch/x86/configs/i386_defconfig" if X86_32
++      default "arch/x86/configs/x86_64_defconfig" if X86_64
+ config GENERIC_LOCKBREAK
+--- a/init/Kconfig
++++ b/init/Kconfig
+@@ -13,6 +13,7 @@ config DEFCONFIG_LIST
+       default "/lib/modules/$UNAME_RELEASE/.config"
+       default "/etc/kernel-config"
+       default "/boot/config-$UNAME_RELEASE"
++      default "$ARCH_DEFCONFIG"
+       default "arch/$ARCH/defconfig"
+ menu "General setup"
diff --git a/queue-2.6.25/m68k-add-ext2_find_-first-next-_bit-for-ext4.patch b/queue-2.6.25/m68k-add-ext2_find_-first-next-_bit-for-ext4.patch
new file mode 100644 (file)
index 0000000..f49293c
--- /dev/null
@@ -0,0 +1,85 @@
+From stable-bounces@linux.kernel.org Sun Jun  8 14:11:56 2008
+From: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
+Date: Sun, 8 Jun 2008 22:30:48 +0200 (CEST)
+Subject: m68k: Add ext2_find_{first,next}_bit() for ext4
+To: Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>
+Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
+Message-ID: <Pine.LNX.4.64.0806082229350.25145@anakin>
+
+
+From: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
+
+commit 69c5ddf58a03da3686691ad2f293bc79fd977c10 upstream
+
+Add ext2_find_{first,next}_bit(), which are needed for ext4.
+They're derived out of the ext2_find_next_zero_bit found in the same file.
+Compile tested with crosstools
+
+[Reworked to preserve all symmetry with ext2_find_{first,next}_zero_bit()]
+
+This fixes http://bugzilla.kernel.org/show_bug.cgi?id=10393
+
+Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
+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>
+
+---
+ include/asm-m68k/bitops.h |   46 ++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 44 insertions(+), 2 deletions(-)
+
+--- a/include/asm-m68k/bitops.h
++++ b/include/asm-m68k/bitops.h
+@@ -410,8 +410,50 @@ static inline int ext2_find_next_zero_bi
+       res = ext2_find_first_zero_bit (p, size - 32 * (p - addr));
+       return (p - addr) * 32 + res;
+ }
+-#define ext2_find_next_bit(addr, size, off) \
+-      generic_find_next_le_bit((unsigned long *)(addr), (size), (off))
++
++static inline int ext2_find_first_bit(const void *vaddr, unsigned size)
++{
++      const unsigned long *p = vaddr, *addr = vaddr;
++      int res;
++
++      if (!size)
++              return 0;
++
++      size = (size >> 5) + ((size & 31) > 0);
++      while (*p++ == 0UL)
++      {
++              if (--size == 0)
++                      return (p - addr) << 5;
++      }
++
++      --p;
++      for (res = 0; res < 32; res++)
++              if (ext2_test_bit(res, p))
++                      break;
++      return (p - addr) * 32 + res;
++}
++
++static inline int ext2_find_next_bit(const void *vaddr, unsigned size,
++                                   unsigned offset)
++{
++      const unsigned long *addr = vaddr;
++      const unsigned long *p = addr + (offset >> 5);
++      int bit = offset & 31UL, res;
++
++      if (offset >= size)
++              return size;
++
++      if (bit) {
++              /* Look for one in first longword */
++              for (res = bit; res < 32; res++)
++                      if (ext2_test_bit(res, p))
++                              return (p - addr) * 32 + res;
++              p++;
++      }
++      /* No set bit yet, search remaining full bytes for a set bit */
++      res = ext2_find_first_bit(p, size - 32 * (p - addr));
++      return (p - addr) * 32 + res;
++}
+ #endif /* __KERNEL__ */
diff --git a/queue-2.6.25/serial-fix-enable_irq_wake-disable_irq_wake-imbalance-in-serial_core.c.patch b/queue-2.6.25/serial-fix-enable_irq_wake-disable_irq_wake-imbalance-in-serial_core.c.patch
new file mode 100644 (file)
index 0000000..08ac39e
--- /dev/null
@@ -0,0 +1,50 @@
+From 03a74dcc7eebe6edd778317e82fafdf71e68488c Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Fri, 23 May 2008 13:04:49 -0700
+Subject: serial: fix enable_irq_wake/disable_irq_wake imbalance in serial_core.c
+
+From: Arjan van de Ven <arjan@linux.intel.com>
+
+commit 03a74dcc7eebe6edd778317e82fafdf71e68488c in mainline.
+
+enable_irq_wake() and disable_irq_wake() need to be balanced.  However,
+serial_core.c calls these for different conditions during the suspend and
+resume functions...
+
+This is causing a regular WARN_ON() as found at
+http://www.kerneloops.org/search.php?search=set_irq_wake
+
+This patch makes the conditions for triggering the _wake enable/disable
+sequence identical.
+
+Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
+Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
+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/serial/serial_core.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/serial/serial_core.c
++++ b/drivers/serial/serial_core.c
+@@ -2022,6 +2022,8 @@ int uart_suspend_port(struct uart_driver
+ int uart_resume_port(struct uart_driver *drv, struct uart_port *port)
+ {
+       struct uart_state *state = drv->state + port->line;
++      struct device *tty_dev;
++      struct uart_match match = {port, drv};
+       mutex_lock(&state->mutex);
+@@ -2031,7 +2033,8 @@ int uart_resume_port(struct uart_driver 
+               return 0;
+       }
+-      if (!port->suspended) {
++      tty_dev = device_find_child(port->dev, &match, serial_match_port);
++      if (!port->suspended && device_may_wakeup(tty_dev)) {
+               disable_irq_wake(port->irq);
+               mutex_unlock(&state->mutex);
+               return 0;
index bc301ce63d43522a514c01de241ce01ae67a00e9..db2311052104461bbcdfb023f9cc187317f814b0 100644 (file)
@@ -37,3 +37,9 @@ hgafb-resource-management-fix.patch
 forcedeth-msi-interrupts.patch
 tcp-fix-inconsistency-source.patch
 ib-umem-avoid-sign-problems-when-demoting-npages-to-integer.patch
+m68k-add-ext2_find_-first-next-_bit-for-ext4.patch
+cifs-fix-oops-on-mount-when-config_cifs_dfs_upcall-is-enabled.patch
+cpufreq-fix-format-string-bug.patch
+serial-fix-enable_irq_wake-disable_irq_wake-imbalance-in-serial_core.c.patch
+kconfig-introduce-arch_defconfig-to-defconfig_list.patch
+bttv-fix-a-deadlock-in-the-bttv-driver.patch