Unverified Commit 37e8f067 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!11455 v2 CVE-2024-44972

Merge Pull Request from: @ci-robot 
 
PR sync from: Yifan Qiao <qiaoyifan4@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/XXX2LVQ3IHHGLIWSFITKIHWDXPNYA773/ 
Change Log:
v2: Add CVE number inside the commit msg.

Naohiro Aota (1):
  btrfs: fix invalid mapping of extent xarray state

Qu Wenruo (1):
  btrfs: do not clear page dirty inside extent_write_locked_range()


-- 
2.39.2
 
https://gitee.com/openeuler/kernel/issues/IAHMJO 
 
Link:https://gitee.com/openeuler/kernel/pulls/11455

 

Reviewed-by: default avatarZhang Peng <zhangpeng362@huawei.com>
Signed-off-by: default avatarZhang Peng <zhangpeng362@huawei.com>
parents 10e0ea77 fe78966e
Loading
Loading
Loading
Loading
+8 −10
Original line number Diff line number Diff line
@@ -1355,6 +1355,13 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
		free_extent_map(em);
		em = NULL;

		/*
		 * Although the PageDirty bit might be cleared before entering
		 * this function, subpage dirty bit is not cleared.
		 * So clear subpage dirty bit here so next time we won't submit
		 * page for range already written to disk.
		 */
		btrfs_page_clear_dirty(fs_info, page, cur, iosize);
		btrfs_set_range_writeback(inode, cur, cur + iosize - 1);
		if (!PageWriteback(page)) {
			btrfs_err(inode->root->fs_info,
@@ -1362,13 +1369,6 @@ static noinline_for_stack int __extent_writepage_io(struct btrfs_inode *inode,
			       page->index, cur, end);
		}

		/*
		 * Although the PageDirty bit is cleared before entering this
		 * function, subpage dirty bit is not cleared.
		 * So clear subpage dirty bit here so next time we won't submit
		 * page for range already written to disk.
		 */
		btrfs_page_clear_dirty(fs_info, page, cur, iosize);

		submit_extent_page(bio_ctrl, disk_bytenr, page, iosize,
				   cur - page_offset(page));
@@ -2172,10 +2172,8 @@ void extent_write_locked_range(struct inode *inode, struct page *locked_page,

		page = find_get_page(mapping, cur >> PAGE_SHIFT);
		ASSERT(PageLocked(page));
		if (pages_dirty && page != locked_page) {
		if (pages_dirty && page != locked_page)
			ASSERT(PageDirty(page));
			clear_page_dirty_for_io(page);
		}

		ret = __extent_writepage_io(BTRFS_I(inode), page, &bio_ctrl,
					    i_size, &nr);