public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Al Viro <viro@zeniv.linux.org.uk>
Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, Greg KH <gregkh@linuxfoundation.org>
Subject: Re: [ 54/62] nfsd: fix error values returned by nfsd4_lockt() when nfsd_open() fails
Date: Fri, 27 Apr 2012 17:54:38 -0500	[thread overview]
Message-ID: <20120427225438.GG2821@burratino> (raw)
In-Reply-To: <20120424223246.607005556@linuxfoundation.org>

Greg KH wrote:

> 3.3-stable review patch.
[...]
> commit 04da6e9d63427b2d0fd04766712200c250b3278f upstream.
>
> nfsd_open() already returns an NFS error value; only vfs_test_lock()
> result needs to be fed through nfserrno().  Broken by commit 55ef12
> (nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT)
> three years ago...

The regression was introduced in v2.6.29-rc1~177^2~14, so presumably
2.6.32.y and 3.0.y need this.  Here's a blind backport to 3.0.y ---
the only conflict encountered is of the unrelated-changes-on-adjacent-
lines kind, against

  v3.2-rc1~80^2~63 nfsd4: eliminate unused lt_stateowner
  v3.2-rc1~80^2~58 nfsd4: split stateowners into open and lockowners

Untested, so thoughts and testing would be welcome as usual.

-- >8 --
From: Al Viro <viro@zeniv.linux.org.uk>
Date: Fri, 13 Apr 2012 00:00:04 -0400

commit 04da6e9d63427b2d0fd04766712200c250b3278f upstream.

nfsd_open() already returns an NFS error value; only vfs_test_lock()
result needs to be fed through nfserrno().  Broken by commit 55ef12
(nfsd: Ensure nfsv4 calls the underlying filesystem on LOCKT)
three years ago...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Thanks,
Jonathan

 fs/nfsd/nfs4state.c |   23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index ecd8152965ee..92f7eb7c5863 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -3956,16 +3956,14 @@ out:
  * vfs_test_lock.  (Arguably perhaps test_lock should be done with an
  * inode operation.)
  */
-static int nfsd_test_lock(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file_lock *lock)
+static __be32 nfsd_test_lock(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file_lock *lock)
 {
 	struct file *file;
-	int err;
-
-	err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_READ, &file);
-	if (err)
-		return err;
-	err = vfs_test_lock(file, lock);
-	nfsd_close(file);
+	__be32 err = nfsd_open(rqstp, fhp, S_IFREG, NFSD_MAY_READ, &file);
+	if (!err) {
+		err = nfserrno(vfs_test_lock(file, lock));
+		nfsd_close(file);
+	}
 	return err;
 }
 
@@ -3978,7 +3976,6 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 {
 	struct inode *inode;
 	struct file_lock file_lock;
-	int error;
 	__be32 status;
 
 	if (locks_in_grace())
@@ -4030,12 +4027,10 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
 
 	nfs4_transform_lock_offset(&file_lock);
 
-	status = nfs_ok;
-	error = nfsd_test_lock(rqstp, &cstate->current_fh, &file_lock);
-	if (error) {
-		status = nfserrno(error);
+	status = nfsd_test_lock(rqstp, &cstate->current_fh, &file_lock);
+	if (status)
 		goto out;
-	}
+
 	if (file_lock.fl_type != F_UNLCK) {
 		status = nfserr_denied;
 		nfs4_set_lock_denied(&file_lock, &lockt->lt_denied);
-- 
1.7.10


  reply	other threads:[~2012-04-27 22:54 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-24 22:33 [ 00/62] 3.3.4-stable review Greg KH
2012-04-24 22:32 ` [ 01/62] Perf: fix build breakage Greg KH
2012-04-24 22:32 ` [ 02/62] crypto: sha512 - Fix byte counter overflow in SHA-512 Greg KH
2012-04-24 22:32 ` [ 03/62] hwmon: fam15h_power: fix bogus values with current BIOSes Greg KH
2012-04-25 19:45   ` Ben Hutchings
2012-04-25 20:50     ` Guenter Roeck
2012-04-26 16:43       ` Greg KH
2012-04-26 16:47         ` Guenter Roeck
2012-04-26 21:15           ` Greg KH
2012-04-24 22:32 ` [ 04/62] ALSA: hda/conexant - Dont set HP pin-control bit unconditionally Greg KH
2012-04-24 22:32 ` [ 05/62] ALSA: hda/conexant - Set up the missing docking-station pins Greg KH
2012-04-24 22:32 ` [ 06/62] memblock: memblock should be able to handle zero length operations Greg KH
2012-04-24 22:32 ` [ 07/62] ARM: clps711x: serial driver hungs are a result of call disable_irq within ISR Greg KH
2012-04-24 22:32 ` [ 08/62] ARM: at91: fix at91sam9261ek Ethernet dm9000 irq Greg KH
2012-04-24 22:32 ` [ 09/62] ARM: OMAP1: DMTIMER: fix broken timer clock source selection Greg KH
2012-04-24 22:32 ` [ 10/62] ARM: OMAP: serial: Fix the ocp smart idlemode handling bug Greg KH
2012-04-24 22:32 ` [ 11/62] mmc: fixes for eMMC v4.5 discard operation Greg KH
2012-04-24 22:32 ` [ 12/62] mmc: fixes for eMMC v4.5 sanitize operation Greg KH
2012-04-24 22:32 ` [ 13/62] mmc: sdhci: refine non-removable card checking for card detection Greg KH
2012-04-24 22:32 ` [ 14/62] mmc: unbreak sdhci-esdhc-imx on i.MX25 Greg KH
2012-04-27 22:31   ` Jonathan Nieder
2012-04-28  6:03     ` Wolfram Sang
2012-04-30  1:06     ` Greg KH
2012-04-24 22:32 ` [ 15/62] xen/gntdev: do not set VM_PFNMAP Greg KH
2012-04-24 22:32 ` [ 16/62] xen/xenbus: Add quirk to deal with misconfigured backends Greg KH
2012-04-24 22:32 ` [ 17/62] USB: yurex: Remove allocation of coherent buffer for setup-packet buffer Greg KH
2012-04-24 22:32 ` [ 18/62] USB: yurex: Fix missing URB_NO_TRANSFER_DMA_MAP flag in urb Greg KH
2012-04-24 22:33 ` [ 19/62] uwb: fix use of del_timer_sync() in interrupt Greg KH
2012-04-24 22:33 ` [ 20/62] uwb: fix error handling Greg KH
2012-04-24 22:33 ` [ 21/62] davinci_mdio: Fix MDIO timeout check Greg KH
2012-04-24 22:33 ` [ 22/62] mwifiex: update pcie8766 scratch register addresses Greg KH
2012-04-24 22:33 ` [ 23/62] brcm80211: smac: resume transmit fifo upon receiving frames Greg KH
2012-04-25 22:39   ` Jonathan Nieder
2012-04-26  8:48     ` Arend van Spriel
2012-04-26 18:20       ` Jonathan Nieder
2012-04-30  1:04         ` Greg KH
2012-04-24 22:33 ` [ 24/62] mac80211: fix logic error in ibss channel type check Greg KH
2012-04-24 22:33 ` [ 25/62] media: rc-core: set mode for winbond-cir Greg KH
2012-04-24 22:33 ` [ 26/62] media: drxk: Does not unlock mutex if sanity check failed in scu_command() Greg KH
2012-04-24 22:33 ` [ 27/62] media: dvb_frontend: Fix a regression when switching back to DVB-S Greg KH
2012-04-24 22:33 ` [ 28/62] cfg80211: fix interface combinations check Greg KH
2012-04-24 22:33 ` [ 29/62] staging: r8712u: Fix regression caused by commit 8c213fa Greg KH
2012-04-24 22:33 ` [ 30/62] Fix modpost failures in fedora 17 Greg KH
2012-04-26  0:41   ` Jonathan Nieder
2012-04-26  0:48     ` David Miller
2012-04-30  1:05       ` Greg KH
2012-04-24 22:33 ` [ 31/62] mm: fix s390 BUG by __set_page_dirty_no_writeback on swap Greg KH
2012-04-24 22:33 ` [ 32/62] md: dont call ->add_disk unless there is good reason Greg KH
2012-04-24 22:33 ` [ 33/62] md: fix possible corruption of array metadata on shutdown Greg KH
2012-04-24 22:33 ` [ 34/62] jbd2: use GFP_NOFS for blkdev_issue_flush Greg KH
2012-04-24 22:33 ` [ 35/62] USB: serial: cp210x: Fixed usb_control_msg timeout values Greg KH
2012-04-24 22:33 ` [ 36/62] pch_uart: Fix dma channel unallocated issue Greg KH
2012-04-24 22:33 ` [ 37/62] drivers/tty/amiserial.c: add missing tty_unlock Greg KH
2012-04-24 22:33 ` [ 38/62] USB: sierra: avoid QMI/wwan interface on MC77xx Greg KH
2012-04-24 22:33 ` [ 39/62] EHCI: fix criterion for resuming the root hub Greg KH
2012-04-25  6:17   ` Jonathan Nieder
2012-04-30  1:04     ` Greg KH
2012-04-24 22:33 ` [ 40/62] EHCI: always clear the STS_FLR status bit Greg KH
2012-04-24 22:33 ` [ 41/62] USB: fix deadlock in bConfigurationValue attribute method Greg KH
2012-04-24 22:33 ` [ 42/62] usb: gadget: udc-core: stop UDC on device-initiated disconnect Greg KH
2012-04-24 22:33 ` [ 43/62] usb: gadget: udc-core: fix asymmetric calls in remove_driver Greg KH
2012-04-26  0:34   ` Ben Hutchings
2012-04-26 21:16     ` Greg KH
2012-04-27  8:00       ` Felipe Balbi
2012-04-24 22:33 ` [ 44/62] usb: gadget: eliminate NULL pointer dereference (bugfix) Greg KH
2012-04-24 22:33 ` [ 45/62] usb: musb: omap: fix crash when musb glue (omap) gets initialized Greg KH
2012-04-26  0:41   ` Ben Hutchings
2012-04-24 22:33 ` [ 46/62] usb: musb: omap: fix the error check for pm_runtime_get_sync Greg KH
2012-04-24 22:33 ` [ 47/62] PCI: Add quirk for still enabled interrupts on Intel Sandy Bridge GPUs Greg KH
2012-04-24 22:33 ` [ 48/62] ext4: fix endianness breakage in ext4_split_extent_at() Greg KH
2012-04-24 22:33 ` [ 49/62] KVM: unmap pages from the iommu when slots are removed Greg KH
2012-04-27 21:54   ` Jonathan Nieder
2012-04-27 22:08     ` Alex Williamson
2012-04-30  1:05       ` Greg KH
2012-04-24 22:33 ` [ 50/62] dell-laptop: add 3 machines that has touchpad LED Greg KH
2012-04-24 22:33 ` [ 51/62] dell-laptop: touchpad LED should persist its status after S3 Greg KH
2012-04-24 22:33 ` [ 52/62] Bluetooth: Add support for Atheros [04ca:3005] Greg KH
2012-04-24 22:33 ` [ 53/62] nfsd: fix b0rken error value for setattr on read-only mount Greg KH
2012-04-27 22:42   ` Jonathan Nieder
2012-04-24 22:33 ` [ 54/62] nfsd: fix error values returned by nfsd4_lockt() when nfsd_open() fails Greg KH
2012-04-27 22:54   ` Jonathan Nieder [this message]
2012-04-24 22:33 ` [ 55/62] nfsd: fix endianness breakage in TEST_STATEID handling Greg KH
2012-04-24 22:33 ` [ 56/62] nfsd: fix compose_entry_fh() failure exits Greg KH
2012-04-24 22:33 ` [ 57/62] btrfs: btrfs_root_readonly() broken on big-endian Greg KH
2012-04-24 22:33 ` [ 58/62] ocfs2: ->l_next_free_req breakage " Greg KH
2012-04-24 22:33 ` [ 59/62] ocfs: ->rl_used " Greg KH
2012-04-24 22:33 ` [ 60/62] ocfs2: ->rl_count endianness breakage Greg KH
2012-04-24 22:33 ` [ 61/62] ocfs2: ->e_leaf_clusters " Greg KH
2012-04-24 22:33 ` [ 62/62] lockd: fix the endianness bug Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120427225438.GG2821@burratino \
    --to=jrnieder@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox