From: Chris Wright Date: Thu, 16 Nov 2006 01:36:57 +0000 (-0800) Subject: another round of patches queued X-Git-Tag: v2.6.18.3~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=410555bf86e64d736398528400cc5d75d0d798e0;p=thirdparty%2Fkernel%2Fstable-queue.git another round of patches queued --- diff --git a/queue-2.6.18/cciss-fix-iostat.patch b/queue-2.6.18/cciss-fix-iostat.patch new file mode 100644 index 00000000000..4f7c11892ab --- /dev/null +++ b/queue-2.6.18/cciss-fix-iostat.patch @@ -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 + +cciss needs to call disk_stat_add() for iostat to work. + +Signed-off-by: Jens Axboe +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..43438bdeca1 --- /dev/null +++ b/queue-2.6.18/char-isicom-fix-close-bug.patch @@ -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 + +[PATCH] Char: isicom, fix close bug + +port is dereferenced even if it is NULL. Dereference it _after_ the +check if (!port)... Thanks Eric for reporting this. + +This fixes + + http://bugzilla.kernel.org/show_bug.cgi?id=7527 + +Signed-off-by: Jiri Slaby +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..6a9532e1f4b --- /dev/null +++ b/queue-2.6.18/cifs-report-rename-failure-when-target-file-is-locked-by-windows.patch @@ -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 + +Fixes Samba bugzilla bug # 4182 + +Rename by handle failures (retry after rename by path) were not +being returned back. + +Signed-off-by: Steve French +[chrisw: trivial backport in CHANGES] +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..f4ebd3e10ff --- /dev/null +++ b/queue-2.6.18/cpqarray-fix-iostat.patch @@ -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 + +cpqarray needs to call disk_stat_add() for iostat to work. + +Signed-off-by: Jens Axboe +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..4be70ea4d9f --- /dev/null +++ b/queue-2.6.18/cpufreq-make-acpi-cpufreq-unsticky-again.patch @@ -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 +To: stable@kernel.org +Subject: CPUFREQ: Make acpi-cpufreq unsticky again. + +This caused suspend/resume regressions. + +Signed-off-by: Dave Jones +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..92676bd45eb --- /dev/null +++ b/queue-2.6.18/fix-bad-data-direction-in-sg_io.patch @@ -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 + +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 +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..3cb25fba0fc --- /dev/null +++ b/queue-2.6.18/new-posix-locking-code-not-setting-rc-properly-to-zero-on-successful.patch @@ -0,0 +1,35 @@ +From 6b70c9559bcf381a6521e38b0dd5d3d4d905868a Mon Sep 17 00:00:00 2001 +From: Steve French +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 +Signed-off-by: Chris Wright +--- + 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 index 00000000000..5a7075824b1 --- /dev/null +++ b/queue-2.6.18/patch-for-nvidia-divide-by-zero-error-for-7600-pci-express-card.patch @@ -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 + +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 +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + + 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 index 00000000000..2fb10af137c --- /dev/null +++ b/queue-2.6.18/pci-don-t-try-to-remove-sysfs-files-before-they-are-setup.patch @@ -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 + +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 +Acked-by: Greg Kroah-Hartman +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Chris Wright +--- + + 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 diff --git a/queue-2.6.18/series b/queue-2.6.18/series index 12ce65cf97c..a475bbd9a7f 100644 --- a/queue-2.6.18/series +++ b/queue-2.6.18/series @@ -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