Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1626237
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 4.9 13/69] CIFS: store results of cifs_reopen_file to avoid infinite wait |
| Date | 2017-04-19 16:50 +0200 |
| Message-ID | <txZ5H-4CC-97@gated-at.bofh.it> (permalink) |
| References | <txZ5D-4CC-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Germano Percossi <germano.percossi@citrix.com>
commit 1fa839b4986d648b907d117275869a0e46c324b9 upstream.
This fixes Continuous Availability when errors during
file reopen are encountered.
cifs_user_readv and cifs_user_writev would wait for ever if
results of cifs_reopen_file are not stored and for later inspection.
In fact, results are checked and, in case of errors, a chain
of function calls leading to reads and writes to be scheduled in
a separate thread is skipped.
These threads will wake up the corresponding waiters once reads
and writes are done.
However, given the return value is not stored, when rc is checked
for errors a previous one (always zero) is inspected instead.
This leads to pending reads/writes added to the list, making
cifs_user_readv and cifs_user_writev wait for ever.
Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <smfrench@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/cifs/file.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -2597,7 +2597,7 @@ cifs_write_from_iter(loff_t offset, size
wdata->credits = credits;
if (!wdata->cfile->invalidHandle ||
- !cifs_reopen_file(wdata->cfile, false))
+ !(rc = cifs_reopen_file(wdata->cfile, false)))
rc = server->ops->async_writev(wdata,
cifs_uncached_writedata_release);
if (rc) {
@@ -3002,7 +3002,7 @@ cifs_send_async_read(loff_t offset, size
rdata->credits = credits;
if (!rdata->cfile->invalidHandle ||
- !cifs_reopen_file(rdata->cfile, true))
+ !(rc = cifs_reopen_file(rdata->cfile, true)))
rc = server->ops->async_readv(rdata);
error:
if (rc) {
@@ -3577,7 +3577,7 @@ static int cifs_readpages(struct file *f
}
if (!rdata->cfile->invalidHandle ||
- !cifs_reopen_file(rdata->cfile, true))
+ !(rc = cifs_reopen_file(rdata->cfile, true)))
rc = server->ops->async_readv(rdata);
if (rc) {
add_credits_and_wake_if(server, rdata->credits, 0);
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 4.9 00/69] 4.9.24-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 48/69] crypto: algif_aead - Fix bogus request dereference in completion function Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 53/69] ext4: fix inode checksum calculation problem if i_extra_size is small Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 58/69] ASoC: Intel: select DW_DMAC_CORE since its mandatory Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 36/69] libnvdimm: fix blk free space accounting Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 64/69] [media] dvb-usb: dont use stack for firmware load Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 13/69] CIFS: store results of cifs_reopen_file to avoid infinite wait Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 16:50 +0200 [PATCH 4.9 52/69] [media] dvb-usb-v2: avoid use-after-free Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 29/69] scsi: sd: Consider max_xfer_blocks if opt_xfer_blocks is unusable Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 50/69] parisc: Fix get_user() for 64-bit value on 32-bit kernel Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 46/69] zram: do not use copy_page with non-page aligned address Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 56/69] nbd: use loff_t for blocksize and nbd_set_size args Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 43/69] char: lack of bool string made CONFIG_DEVPORT always on Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 41/69] irqchip/irq-imx-gpcv2: Fix spinlock initialization Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 03/69] tcmu: Fix wrongly calculating of the base_command_size Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 47/69] ftrace: Fix function pid filter on instances Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 57/69] nbd: fix 64-bit division Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 37/69] libnvdimm: fix reconfig_mutex, mmap_sem, and jbd2_handle lockdep splat Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 44/69] Revert "MIPS: Lantiq: Fix cascaded IRQ setup" Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 55/69] drm/nouveau/disp/mcp7x: disable dptmds workaround Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 49/69] crypto: ahash - Fix EINPROGRESS notification callback Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 45/69] kvm: fix page struct leak in handle_vmon Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 54/69] mm: memcontrol: use special workqueue for creating per-memcg caches Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 05/69] thp: fix MADV_DONTNEED vs. MADV_FREE race Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 30/69] scsi: qla2xxx: Add fix to read correct register value for ISP82xx. Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:00 +0200 [PATCH 4.9 39/69] pwm: rockchip: State of PWM clock should synchronize with PWM enabled state Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 24/69] efi/libstub: Skip GOP with PIXEL_BLT_ONLY format Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 04/69] tcmu: Skip Data-Out blocks before gathering Data-In buffer for BIDI case Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 08/69] orangefs: free superblock when mount fails Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 16/69] x86/efi: Dont try to reserve runtime regions Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 10/69] drm/nouveau/mmu/nv4a: use nv04 mmu rather than the nv44 one Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 21/69] acpi, nfit, libnvdimm: fix interleave set cookie calculation (64-bit comparison) Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 15/69] perf/x86: Avoid exposing wrong/stale data in intel_pmu_lbr_read_32() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 17/69] x86/signals: Fix lower/upper bound reporting in compat siginfo Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 19/69] x86/vdso: Ensure vdso32_enabled gets set to valid values only Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 26/69] iscsi-target: Fix TMR reference leak during session shutdown Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 20/69] x86/vdso: Plug race between mapping and ELF header setup Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 22/69] ACPI / scan: Set the visited flag for all enumerated devices Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 07/69] zsmalloc: expand class bit Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 06/69] thp: fix MADV_DONTNEED vs clear soft dirty race Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 28/69] scsi: sr: Sanity check returned mode data Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 09/69] drm/nouveau/mpeg: mthd returns true on success now Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 38/69] can: ifi: use correct register to read rx status Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 12/69] CIFS: reconnect thread reschedule itself Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 [PATCH 4.9 25/69] efi/fb: Avoid reconfiguration of BAR that covers the framebuffer Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-19 17:20 +0200 Re: [PATCH 4.9 00/69] 4.9.24-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2017-04-19 22:40 +0200 Re: [PATCH 4.9 00/69] 4.9.24-stable review Guenter Roeck <linux@roeck-us.net> - 2017-04-20 01:30 +0200
csiph-web