linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Yan, Zheng" <zyan@redhat.com>, Jeff Layton <jlayton@kernel.org>,
	Ilya Dryomov <idryomov@gmail.com>,
	Sasha Levin <sashal@kernel.org>,
	ceph-devel@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 06/28] ceph: don't skip updating wanted caps when cap is stale
Date: Sat, 18 Apr 2020 10:43:06 -0400	[thread overview]
Message-ID: <20200418144328.10265-6-sashal@kernel.org> (raw)
In-Reply-To: <20200418144328.10265-1-sashal@kernel.org>

From: "Yan, Zheng" <zyan@redhat.com>

[ Upstream commit 0aa971b6fd3f92afef6afe24ef78d9bb14471519 ]

1. try_get_cap_refs() fails to get caps and finds that mds_wanted
   does not include what it wants. It returns -ESTALE.
2. ceph_get_caps() calls ceph_renew_caps(). ceph_renew_caps() finds
   that inode has cap, so it calls ceph_check_caps().
3. ceph_check_caps() finds that issued caps (without checking if it's
   stale) already includes caps wanted by open file, so it skips
   updating wanted caps.

Above events can cause an infinite loop inside ceph_get_caps().

Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/ceph/caps.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
index c3a3ee74e2d84..1b5a50848b5be 100644
--- a/fs/ceph/caps.c
+++ b/fs/ceph/caps.c
@@ -1863,8 +1863,12 @@ void ceph_check_caps(struct ceph_inode_info *ci, int flags,
 		}
 
 		/* want more caps from mds? */
-		if (want & ~(cap->mds_wanted | cap->issued))
-			goto ack;
+		if (want & ~cap->mds_wanted) {
+			if (want & ~(cap->mds_wanted | cap->issued))
+				goto ack;
+			if (!__cap_is_valid(cap))
+				goto ack;
+		}
 
 		/* things we might delay */
 		if ((cap->issued & ~retain) == 0 &&
-- 
2.20.1


  parent reply	other threads:[~2020-04-18 14:43 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-18 14:43 [PATCH AUTOSEL 4.14 01/28] iommu/amd: Fix the configuration of GCR3 table root pointer Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 02/28] watchdog: reset last_hw_keepalive time at start Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 03/28] iommu/vt-d: Fix mm reference leak Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 04/28] scsi: lpfc: Fix kasan slab-out-of-bounds error in lpfc_unreg_login Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 05/28] ceph: return ceph_mdsc_do_request() errors from __get_parent() Sasha Levin
2020-04-18 14:43 ` Sasha Levin [this message]
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 07/28] pwm: rcar: Fix late Runtime PM enablement Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 08/28] ASoC: dpcm: allow start or stop during pause for backend Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 09/28] scsi: iscsi: Report unbind session event when the target has been removed Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 10/28] ASoC: Intel: atom: Take the drv->lock mutex before calling sst_send_slot_map() Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 11/28] kernel/gcov/fs.c: gcov_seq_next() should increase position index Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 12/28] selftests: kmod: fix handling test numbers above 9 Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 13/28] ipc/util.c: sysvipc_find_ipc() should increase position index Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 14/28] KVM: s390: vsie: Fix possible race when shadowing region 3 tables Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 15/28] s390/cio: avoid duplicated 'ADD' uevents Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 16/28] pwm: pca9685: Fix PWM/GPIO inter-operation Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 17/28] drm/amdkfd: kfree the wrong pointer Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 18/28] pwm: renesas-tpu: Fix late Runtime PM enablement Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 19/28] pwm: bcm2835: Dynamically allocate base Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 20/28] libnvdimm: Out of bounds read in __nd_ioctl() Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 21/28] ocfs2: no need try to truncate file beyond i_size Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 22/28] hfsplus: fix crash and filesystem corruption when deleting files Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 23/28] perf/core: Disable page faults when getting phys address Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 24/28] libata: Return correct status in sata_pmp_eh_recover_pm() when ATA_DFLAG_DETACH is set Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 25/28] ALSA: ice1724: Fix invalid access for enumerated ctl items Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 26/28] ALSA: hda: Fix potential access overflow in beep helper Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 27/28] KVM: s390: vsie: Fix delivery of addressing exceptions Sasha Levin
2020-04-18 14:43 ` [PATCH AUTOSEL 4.14 28/28] scsi: mpt3sas: Fix kernel panic observed on soft HBA unplug Sasha Levin

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=20200418144328.10265-6-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=ceph-devel@vger.kernel.org \
    --cc=idryomov@gmail.com \
    --cc=jlayton@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=zyan@redhat.com \
    /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;
as well as URLs for NNTP newsgroup(s).