--- /dev/null
+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 */
--- /dev/null
+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;
+
--- /dev/null
+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);
--- /dev/null
+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);
+ }
+
+ /*
--- /dev/null
+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);
+ }
+
+
--- /dev/null
+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;
+ }
--- /dev/null
+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);
+ }
+ }
+
--- /dev/null
+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 */
--- /dev/null
+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
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