]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
another round of patches queued
authorChris Wright <chrisw@sous-sol.org>
Thu, 16 Nov 2006 01:36:57 +0000 (17:36 -0800)
committerChris Wright <chrisw@sous-sol.org>
Thu, 16 Nov 2006 01:36:57 +0000 (17:36 -0800)
queue-2.6.18/cciss-fix-iostat.patch [new file with mode: 0644]
queue-2.6.18/char-isicom-fix-close-bug.patch [new file with mode: 0644]
queue-2.6.18/cifs-report-rename-failure-when-target-file-is-locked-by-windows.patch [new file with mode: 0644]
queue-2.6.18/cpqarray-fix-iostat.patch [new file with mode: 0644]
queue-2.6.18/cpufreq-make-acpi-cpufreq-unsticky-again.patch [new file with mode: 0644]
queue-2.6.18/fix-bad-data-direction-in-sg_io.patch [new file with mode: 0644]
queue-2.6.18/new-posix-locking-code-not-setting-rc-properly-to-zero-on-successful.patch [new file with mode: 0644]
queue-2.6.18/patch-for-nvidia-divide-by-zero-error-for-7600-pci-express-card.patch [new file with mode: 0644]
queue-2.6.18/pci-don-t-try-to-remove-sysfs-files-before-they-are-setup.patch [new file with mode: 0644]
queue-2.6.18/series

diff --git a/queue-2.6.18/cciss-fix-iostat.patch b/queue-2.6.18/cciss-fix-iostat.patch
new file mode 100644 (file)
index 0000000..4f7c118
--- /dev/null
@@ -0,0 +1,34 @@
+From stable-bounces@linux.kernel.org  Wed Nov 15 01:27:27 2006
+From: maks@sternwelten.at
+Date: Wed, 15 Nov 2006 00:59:02 GMT
+Message-Id: <200611150059.kAF0x2xl009619@hera.kernel.org>
+To: stable@kernel.org
+Subject: cciss: fix iostat
+
+From: Jens Axboe <jens.axboe@oracle.com>
+
+cciss needs to call disk_stat_add() for iostat to work.
+
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/block/cciss.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- linux-2.6.18.2.orig/drivers/block/cciss.c
++++ linux-2.6.18.2/drivers/block/cciss.c
+@@ -1302,6 +1302,12 @@ static void cciss_softirq_done(struct re
+       complete_buffers(rq->bio, rq->errors);
++      if (blk_fs_request(rq)) {
++              const int rw = rq_data_dir(rq);
++
++              disk_stat_add(rq->rq_disk, sectors[rw], rq->nr_sectors);
++      }
++
+ #ifdef CCISS_DEBUG
+       printk("Done with %p\n", rq);
+ #endif                                /* CCISS_DEBUG */
diff --git a/queue-2.6.18/char-isicom-fix-close-bug.patch b/queue-2.6.18/char-isicom-fix-close-bug.patch
new file mode 100644 (file)
index 0000000..43438bd
--- /dev/null
@@ -0,0 +1,42 @@
+From stable-bounces@linux.kernel.org  Wed Nov 15 01:25:27 2006
+From: maks@sternwelten.at
+Date: Wed, 15 Nov 2006 00:59:11 GMT
+Message-Id: <200611150059.kAF0xBVT009788@hera.kernel.org>
+To: stable@kernel.org
+Subject: Char: isicom, fix close bug
+
+From: Jiri Slaby <jirislaby@gmail.com>
+
+[PATCH] Char: isicom, fix close bug
+
+port is dereferenced even if it is NULL.  Dereference it _after_ the
+check if (!port)...  Thanks Eric <ef87@yahoo.com> for reporting this.
+
+This fixes
+
+       http://bugzilla.kernel.org/show_bug.cgi?id=7527
+
+Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/char/isicom.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- linux-2.6.18.2.orig/drivers/char/isicom.c
++++ linux-2.6.18.2/drivers/char/isicom.c
+@@ -1062,11 +1062,12 @@ static void isicom_shutdown_port(struct 
+ static void isicom_close(struct tty_struct *tty, struct file *filp)
+ {
+       struct isi_port *port = tty->driver_data;
+-      struct isi_board *card = port->card;
++      struct isi_board *card;
+       unsigned long flags;
+       if (!port)
+               return;
++      card = port->card;
+       if (isicom_paranoia_check(port, tty->name, "isicom_close"))
+               return;
diff --git a/queue-2.6.18/cifs-report-rename-failure-when-target-file-is-locked-by-windows.patch b/queue-2.6.18/cifs-report-rename-failure-when-target-file-is-locked-by-windows.patch
new file mode 100644 (file)
index 0000000..6a9532e
--- /dev/null
@@ -0,0 +1,68 @@
+From stable-bounces@linux.kernel.org  Sat Nov  4 05:19:07 2006
+From: maks@sternwelten.at
+Date: Fri, 3 Nov 2006 01:59:05 GMT
+Message-Id: <200611030159.kA31x5tT006163@hera.kernel.org>
+To: stable@kernel.org
+Subject: CIFS: report rename failure when target file is locked by Windows
+
+From: Steve French <sfrench@us.ibm.com>
+
+Fixes Samba bugzilla bug # 4182
+
+Rename by handle failures (retry after rename by path) were not
+being returned back.
+
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+[chrisw: trivial backport in CHANGES]
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ fs/cifs/CHANGES |    6 +++++-
+ fs/cifs/inode.c |   14 +++++++++-----
+ 2 files changed, 14 insertions(+), 6 deletions(-)
+
+--- linux-2.6.18.2.orig/fs/cifs/CHANGES
++++ linux-2.6.18.2/fs/cifs/CHANGES
+@@ -6,7 +6,11 @@ on requests on other threads.  Improve P
+ (lock cancel now works, and unlock of merged range works even
+ to Windows servers now).  Fix oops on mount to lanman servers
+ (win9x, os/2 etc.) when null password.  Do not send listxattr
+-(SMB to query all EAs) if nouser_xattr specified.
++(SMB to query all EAs) if nouser_xattr specified.  Return error
++in rename 2nd attempt retry (ie report if rename by handle also
++fails, after rename by path fails, we were not reporting whether
++the retry worked or not).
++
+ Version 1.44
+ ------------
+--- linux-2.6.18.2.orig/fs/cifs/inode.c
++++ linux-2.6.18.2/fs/cifs/inode.c
+@@ -880,10 +880,14 @@ int cifs_rename(struct inode *source_ino
+                       kmalloc(2 * sizeof(FILE_UNIX_BASIC_INFO), GFP_KERNEL);
+               if (info_buf_source != NULL) {
+                       info_buf_target = info_buf_source + 1;
+-                      rc = CIFSSMBUnixQPathInfo(xid, pTcon, fromName,
+-                              info_buf_source, cifs_sb_source->local_nls, 
+-                              cifs_sb_source->mnt_cifs_flags &
+-                                      CIFS_MOUNT_MAP_SPECIAL_CHR);
++                      if (pTcon->ses->capabilities & CAP_UNIX)
++                              rc = CIFSSMBUnixQPathInfo(xid, pTcon, fromName,
++                                      info_buf_source, 
++                                      cifs_sb_source->local_nls,
++                                      cifs_sb_source->mnt_cifs_flags &
++                                              CIFS_MOUNT_MAP_SPECIAL_CHR);
++                      /* else rc is still EEXIST so will fall through to
++                         unlink the target and retry rename */
+                       if (rc == 0) {
+                               rc = CIFSSMBUnixQPathInfo(xid, pTcon, toName,
+                                               info_buf_target,
+@@ -932,7 +936,7 @@ int cifs_rename(struct inode *source_ino
+                                cifs_sb_source->mnt_cifs_flags & 
+                                       CIFS_MOUNT_MAP_SPECIAL_CHR);
+               if (rc==0) {
+-                      CIFSSMBRenameOpenFile(xid, pTcon, netfid, toName,
++                      rc = CIFSSMBRenameOpenFile(xid, pTcon, netfid, toName,
+                                             cifs_sb_source->local_nls, 
+                                             cifs_sb_source->mnt_cifs_flags &
+                                               CIFS_MOUNT_MAP_SPECIAL_CHR);
diff --git a/queue-2.6.18/cpqarray-fix-iostat.patch b/queue-2.6.18/cpqarray-fix-iostat.patch
new file mode 100644 (file)
index 0000000..f4ebd3e
--- /dev/null
@@ -0,0 +1,52 @@
+From stable-bounces@linux.kernel.org  Wed Nov 15 01:27:12 2006
+From: maks@sternwelten.at
+Date: Wed, 15 Nov 2006 00:59:03 GMT
+Message-Id: <200611150059.kAF0x3XU009627@hera.kernel.org>
+To: stable@kernel.org
+Subject: cpqarray: fix iostat
+
+From: Jens Axboe <jens.axboe@oracle.com>
+
+cpqarray needs to call disk_stat_add() for iostat to work.
+
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/block/cpqarray.c |   15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+--- linux-2.6.18.2.orig/drivers/block/cpqarray.c
++++ linux-2.6.18.2/drivers/block/cpqarray.c
+@@ -1000,6 +1000,7 @@ static inline void complete_buffers(stru
+  */
+ static inline void complete_command(cmdlist_t *cmd, int timeout)
+ {
++      struct request *rq = cmd->rq;
+       int ok=1;
+       int i, ddir;
+@@ -1031,12 +1032,18 @@ static inline void complete_command(cmdl
+                 pci_unmap_page(hba[cmd->ctlr]->pci_dev, cmd->req.sg[i].addr,
+                               cmd->req.sg[i].size, ddir);
+-      complete_buffers(cmd->rq->bio, ok);
++      complete_buffers(rq->bio, ok);
+-      add_disk_randomness(cmd->rq->rq_disk);
++      if (blk_fs_request(rq)) {
++              const int rw = rq_data_dir(rq);
+-        DBGPX(printk("Done with %p\n", cmd->rq););
+-      end_that_request_last(cmd->rq, ok ? 1 : -EIO);
++              disk_stat_add(rq->rq_disk, sectors[rw], rq->nr_sectors);
++      }
++
++      add_disk_randomness(rq->rq_disk);
++
++      DBGPX(printk("Done with %p\n", rq););
++      end_that_request_last(rq, ok ? 1 : -EIO);
+ }
+ /*
diff --git a/queue-2.6.18/cpufreq-make-acpi-cpufreq-unsticky-again.patch b/queue-2.6.18/cpufreq-make-acpi-cpufreq-unsticky-again.patch
new file mode 100644 (file)
index 0000000..4be70ea
--- /dev/null
@@ -0,0 +1,35 @@
+From stable-bounces@linux.kernel.org  Thu Nov  9 10:56:50 2006
+Date: Sun, 1 Oct 2006 08:02:47 GMT
+Message-Id: <200610010802.k9182ljP011634@hera.kernel.org>
+From: Dave Jones <davej@redhat.com>
+To: stable@kernel.org
+Subject: CPUFREQ: Make acpi-cpufreq unsticky again.
+
+This caused suspend/resume regressions.
+
+Signed-off-by: Dave Jones <davej@redhat.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- linux-2.6.18.2.orig/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
++++ linux-2.6.18.2/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+@@ -560,7 +560,6 @@ static struct cpufreq_driver acpi_cpufre
+       .name   = "acpi-cpufreq",
+       .owner  = THIS_MODULE,
+       .attr   = acpi_cpufreq_attr,
+-      .flags  = CPUFREQ_STICKY,
+ };
+@@ -571,7 +570,7 @@ acpi_cpufreq_init (void)
+       acpi_cpufreq_early_init_acpi();
+-      return cpufreq_register_driver(&acpi_cpufreq_driver);
++      return cpufreq_register_driver(&acpi_cpufreq_driver);
+ }
diff --git a/queue-2.6.18/fix-bad-data-direction-in-sg_io.patch b/queue-2.6.18/fix-bad-data-direction-in-sg_io.patch
new file mode 100644 (file)
index 0000000..92676bd
--- /dev/null
@@ -0,0 +1,36 @@
+From stable-bounces@linux.kernel.org  Tue Nov 14 01:24:00 2006
+From: maks@sternwelten.at
+Date: Mon, 13 Nov 2006 17:59:01 GMT
+Message-Id: <200611131759.kADHx1kX004578@hera.kernel.org>
+To: stable@kernel.org
+Subject: [stable] [PATCH] Fix bad data direction in SG_IO
+
+From: Jens Axboe <jens.axboe@oracle.com>
+
+Contrary to what the name misleads you to believe, SG_DXFER_TO_FROM_DEV
+is really just a normal read seen from the device side.
+
+This patch fixes http://lkml.org/lkml/2006/10/13/100
+
+Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ block/scsi_ioctl.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.18.2.orig/block/scsi_ioctl.c
++++ linux-2.6.18.2/block/scsi_ioctl.c
+@@ -246,10 +246,10 @@ static int sg_io(struct file *file, requ
+               switch (hdr->dxfer_direction) {
+               default:
+                       return -EINVAL;
+-              case SG_DXFER_TO_FROM_DEV:
+               case SG_DXFER_TO_DEV:
+                       writing = 1;
+                       break;
++              case SG_DXFER_TO_FROM_DEV:
+               case SG_DXFER_FROM_DEV:
+                       break;
+               }
diff --git a/queue-2.6.18/new-posix-locking-code-not-setting-rc-properly-to-zero-on-successful.patch b/queue-2.6.18/new-posix-locking-code-not-setting-rc-properly-to-zero-on-successful.patch
new file mode 100644 (file)
index 0000000..3cb25fb
--- /dev/null
@@ -0,0 +1,35 @@
+From 6b70c9559bcf381a6521e38b0dd5d3d4d905868a Mon Sep 17 00:00:00 2001
+From: Steve French <sfrench@us.ibm.com>
+Date: Thu, 21 Sep 2006 07:35:29 +0000
+Subject: [CIFS] New POSIX locking code not setting rc properly to zero on successful
+
+unlock in case where server does not support POSIX locks and nobrl is
+not specified.
+
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ fs/cifs/file.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/fs/cifs/file.c b/fs/cifs/file.c
+index e9c5ba9..ddb012a 100644
+--- a/fs/cifs/file.c
++++ b/fs/cifs/file.c
+@@ -752,6 +752,7 @@ int cifs_lock(struct file *file, int cmd
+                       int stored_rc = 0;
+                       struct cifsLockInfo *li, *tmp;
++                      rc = 0;
+                       down(&fid->lock_sem);
+                       list_for_each_entry_safe(li, tmp, &fid->llist, llist) {
+                               if (pfLock->fl_start <= li->offset &&
+@@ -766,7 +767,7 @@ int cifs_lock(struct file *file, int cmd
+                                       kfree(li);
+                               }
+                       }
+-              up(&fid->lock_sem);
++                      up(&fid->lock_sem);
+               }
+       }
diff --git a/queue-2.6.18/patch-for-nvidia-divide-by-zero-error-for-7600-pci-express-card.patch b/queue-2.6.18/patch-for-nvidia-divide-by-zero-error-for-7600-pci-express-card.patch
new file mode 100644 (file)
index 0000000..5a70758
--- /dev/null
@@ -0,0 +1,144 @@
+From stable-bounces@linux.kernel.org  Mon Nov 13 09:50:23 2006
+From: maks@sternwelten.at
+Date: Mon, 13 Nov 2006 16:59:04 GMT
+Message-Id: <200611131659.kADGx4Ol025786@hera.kernel.org>
+To: stable@kernel.org
+Subject: Patch for nvidia divide by zero error for 7600 pci-express card
+
+From: Wink Saville <wink@saville.com>
+
+The following patch resolves the divide by zero error I encountered on my
+system:
+
+       http://marc.10east.com/?l=linux-fbdev-devel&m=116058257024413&w=2
+
+I accomplished this by merging what I thought was appropriate from:
+
+       http://webcvs.freedesktop.org/xorg/driver/xf86-video-nv/src/
+
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/video/nvidia/nv_hw.c    |   12 +++++++++---
+ drivers/video/nvidia/nv_setup.c |   18 +++++++++++++++++-
+ drivers/video/nvidia/nv_type.h  |    1 +
+ drivers/video/nvidia/nvidia.c   |   24 ++++++++++++------------
+ 4 files changed, 39 insertions(+), 16 deletions(-)
+
+--- linux-2.6.18.2.orig/drivers/video/nvidia/nv_hw.c
++++ linux-2.6.18.2/drivers/video/nvidia/nv_hw.c
+@@ -145,12 +145,18 @@ static void nvGetClocks(struct nvidia_pa
+       if (par->Architecture >= NV_ARCH_40) {
+               pll = NV_RD32(par->PMC, 0x4020);
+-              P = (pll >> 16) & 0x03;
++              P = (pll >> 16) & 0x07;
+               pll = NV_RD32(par->PMC, 0x4024);
+               M = pll & 0xFF;
+               N = (pll >> 8) & 0xFF;
+-              MB = (pll >> 16) & 0xFF;
+-              NB = (pll >> 24) & 0xFF;
++              if (((par->Chipset & 0xfff0) == 0x0290) ||
++                              ((par->Chipset & 0xfff0) == 0x0390)) {
++                      MB = 1;
++                      NB = 1;
++              } else {
++                      MB = (pll >> 16) & 0xFF;
++                      NB = (pll >> 24) & 0xFF;
++              }
+               *MClk = ((N * NB * par->CrystalFreqKHz) / (M * MB)) >> P;
+               pll = NV_RD32(par->PMC, 0x4000);
+--- linux-2.6.18.2.orig/drivers/video/nvidia/nv_setup.c
++++ linux-2.6.18.2/drivers/video/nvidia/nv_setup.c
+@@ -359,6 +359,7 @@ int NVCommonSetup(struct fb_info *info)
+       case 0x0186:
+       case 0x0187:
+       case 0x018D:
++      case 0x0228:
+       case 0x0286:
+       case 0x028C:
+       case 0x0316:
+@@ -382,6 +383,10 @@ int NVCommonSetup(struct fb_info *info)
+       case 0x034C:
+       case 0x0160:
+       case 0x0166:
++      case 0x0169:
++      case 0x016B:
++      case 0x016C:
++      case 0x016D:
+       case 0x00C8:
+       case 0x00CC:
+       case 0x0144:
+@@ -639,12 +644,23 @@ int NVCommonSetup(struct fb_info *info)
+               par->fpHeight = NV_RD32(par->PRAMDAC, 0x0800) + 1;
+               par->fpSyncs = NV_RD32(par->PRAMDAC, 0x0848) & 0x30000033;
+-              printk("Panel size is %i x %i\n", par->fpWidth, par->fpHeight);
++              printk("nvidiafb: Panel size is %i x %i\n", par->fpWidth, par->fpHeight);
+       }
+       if (monA)
+               info->monspecs = *monA;
++      if (!par->FlatPanel || !par->twoHeads)
++              par->FPDither = 0;
++
++      par->LVDS = 0;
++      if (par->FlatPanel && par->twoHeads) {
++              NV_WR32(par->PRAMDAC0, 0x08B0, 0x00010004);
++              if (par->PRAMDAC0[0x08b4] & 1)
++                      par->LVDS = 1;
++              printk("nvidiafb: Panel is %s\n", par->LVDS ? "LVDS" : "TMDS");
++      }
++
+       kfree(edidA);
+       kfree(edidB);
+ done:
+--- linux-2.6.18.2.orig/drivers/video/nvidia/nv_type.h
++++ linux-2.6.18.2/drivers/video/nvidia/nv_type.h
+@@ -129,6 +129,7 @@ struct nvidia_par {
+       int fpHeight;
+       int PanelTweak;
+       int paneltweak;
++      int LVDS;
+       int pm_state;
+       u32 crtcSync_read;
+       u32 fpSyncs;
+--- linux-2.6.18.2.orig/drivers/video/nvidia/nvidia.c
++++ linux-2.6.18.2/drivers/video/nvidia/nvidia.c
+@@ -1145,20 +1145,20 @@ static u32 __devinit nvidia_get_arch(str
+       case 0x0340:            /* GeForceFX 5700 */
+               arch = NV_ARCH_30;
+               break;
+-      case 0x0040:
+-      case 0x00C0:
+-      case 0x0120:
++      case 0x0040:            /* GeForce 6800 */
++      case 0x00C0:            /* GeForce 6800 */
++      case 0x0120:            /* GeForce 6800 */
+       case 0x0130:
+-      case 0x0140:
+-      case 0x0160:
+-      case 0x01D0:
+-      case 0x0090:
+-      case 0x0210:
+-      case 0x0220:
++      case 0x0140:            /* GeForce 6600 */
++      case 0x0160:            /* GeForce 6200 */
++      case 0x01D0:            /* GeForce 7200, 7300, 7400 */
++      case 0x0090:            /* GeForce 7800 */
++      case 0x0210:            /* GeForce 6800 */
++      case 0x0220:            /* GeForce 6200 */
+       case 0x0230:
+-      case 0x0240:
+-      case 0x0290:
+-      case 0x0390:
++      case 0x0240:            /* GeForce 6100 */
++      case 0x0290:            /* GeForce 7900 */
++      case 0x0390:            /* GeForce 7600 */
+               arch = NV_ARCH_40;
+               break;
+       case 0x0020:            /* TNT, TNT2 */
diff --git a/queue-2.6.18/pci-don-t-try-to-remove-sysfs-files-before-they-are-setup.patch b/queue-2.6.18/pci-don-t-try-to-remove-sysfs-files-before-they-are-setup.patch
new file mode 100644 (file)
index 0000000..2fb10af
--- /dev/null
@@ -0,0 +1,58 @@
+From stable-bounces@linux.kernel.org  Mon Nov 13 09:50:56 2006
+From: maks@sternwelten.at
+Date: Mon, 13 Nov 2006 16:59:03 GMT
+Message-Id: <200611131659.kADGx3lB025762@hera.kernel.org>
+To: stable@kernel.org
+Subject: pci: don't try to remove sysfs files before they are setup.
+
+From: David Miller <davem@davemloft.net>
+
+The PCI sysfs attributes are created after the initial PCI bus scan.  With
+the addition of more return value checking and assertions in the device and
+sysfs layers we now can get dumps like this on sparc64:
+
+[   20.135032] Call Trace:
+[   20.135042]  [0000000000537f88] pci_remove_bus_device+0x30/0xc0
+[   20.135076]  [000000000078f890] pci_fill_in_pbm_cookies+0x98/0x440
+[   20.135109]  [000000000042e828] sabre_scan_bus+0x230/0x400
+[   20.135139]  [000000000078c710] pcibios_init+0x58/0xa0
+[   20.135159]  [0000000000416f14] init+0x9c/0x2e0
+[   20.135190]  [0000000000417a50] kernel_thread+0x38/0x60
+[   20.135211]  [0000000000417170] rest_init+0x18/0x40
+[   20.135514] PCI0(PBMB): Bus running at 33MHz
+
+It's triggering because removal of the "config" PCI sysfs file for the
+device fails.
+
+On sparc64, after probing the device, we'll delete the PCI device via
+pci_remove_bus_device() if we cannot find the firmware device tree node
+corresponding to it.
+
+This is fine, but at this point the sysfs files for the PCI device won't be
+setup yet.
+
+So we should not try to do anything in pci_remove_sysfs_dev_files() if
+pci_sysfs_init() has not run yet.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Linus Torvalds <torvalds@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ drivers/pci/pci-sysfs.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- linux-2.6.18.2.orig/drivers/pci/pci-sysfs.c
++++ linux-2.6.18.2/drivers/pci/pci-sysfs.c
+@@ -571,6 +571,9 @@ int pci_create_sysfs_dev_files (struct p
+  */
+ void pci_remove_sysfs_dev_files(struct pci_dev *pdev)
+ {
++      if (!sysfs_initialized)
++              return;
++
+       if (pdev->cfg_size < 4096)
+               sysfs_remove_bin_file(&pdev->dev.kobj, &pci_config_attr);
+       else
index 12ce65cf97c10d58357d409d36188a8958988abb..a475bbd9a7fdbaec5c0b603efae6ad8ebfec9d86 100644 (file)
@@ -19,3 +19,12 @@ tcp-don-t-use-highmem-in-tcp-hash-size-calculation.patch
 net-set-truesize-in-pskb_copy.patch
 fix-via586-irq-routing-for-pirq-5.patch
 security-seclvl.c-fix-time-wrap.patch
+cpufreq-make-acpi-cpufreq-unsticky-again.patch
+patch-for-nvidia-divide-by-zero-error-for-7600-pci-express-card.patch
+pci-don-t-try-to-remove-sysfs-files-before-they-are-setup.patch
+fix-bad-data-direction-in-sg_io.patch
+char-isicom-fix-close-bug.patch
+cpqarray-fix-iostat.patch
+cciss-fix-iostat.patch
+cifs-report-rename-failure-when-target-file-is-locked-by-windows.patch
+new-posix-locking-code-not-setting-rc-properly-to-zero-on-successful.patch