Commit 3f4edfb1 authored by Xiubo Li's avatar Xiubo Li Committed by openeuler-sync-bot
Browse files

ceph: remove the incorrect Fw reference check when dirtying pages

stable inclusion
from stable-v5.10.227
commit f55e003d261baa7c57d51ae5c8ec1f5c26a35c89
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IB2YU2
CVE: CVE-2024-50179

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=f55e003d261baa7c57d51ae5c8ec1f5c26a35c89



--------------------------------

[ Upstream commit c08dfb1b49492c09cf13838c71897493ea3b424e ]

When doing the direct-io reads it will also try to mark pages dirty,
but for the read path it won't hold the Fw caps and there is case
will it get the Fw reference.

Fixes: 5dda377c ("ceph: set i_head_snapc when getting CEPH_CAP_FILE_WR reference")
Signed-off-by: default avatarXiubo Li <xiubli@redhat.com>
Reviewed-by: default avatarPatrick Donnelly <pdonnell@redhat.com>
Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarBaokun Li <libaokun1@huawei.com>
(cherry picked from commit b2266688)
parent d26629f1
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -91,7 +91,6 @@ static int ceph_set_page_dirty(struct page *page)

	/* dirty the head */
	spin_lock(&ci->i_ceph_lock);
	BUG_ON(ci->i_wr_ref == 0); // caller should hold Fw reference
	if (__ceph_have_pending_cap_snap(ci)) {
		struct ceph_cap_snap *capsnap =
				list_last_entry(&ci->i_cap_snaps,