Commit 728c0094 authored by Yu Kuai's avatar Yu Kuai Committed by Jialin Zhang
Browse files

Revert "filemap: Correct the conditions for marking a folio as accessed"

hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I6YDHU


CVE: NA

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

This reverts commit 939325bb.

Because this commit make a mistake to judge if the page is the same.

Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
Reviewed-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
parent 40307a4a
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -2530,13 +2530,6 @@ static int generic_file_buffered_read_get_pages(struct kiocb *iocb,
	goto find_page;
}

static inline bool pos_same_page(loff_t pos1, loff_t pos2, struct page *page)
{
	unsigned int shift = page_shift(page);

	return (pos1 >> shift == pos2 >> shift);
}

/**
 * generic_file_buffered_read - generic file read routine
 * @iocb:	the iocb to read
@@ -2627,10 +2620,11 @@ ssize_t generic_file_buffered_read(struct kiocb *iocb,
		writably_mapped = mapping_writably_mapped(mapping);

		/*
		 * When a read accesses a page several times, only
		 * When a sequential read accesses a page several times, only
		 * mark it as accessed the first time.
		 */
		if (pos_same_page(iocb->ki_pos, ra->prev_pos -1, pages[0]))
		if (iocb->ki_pos >> PAGE_SHIFT !=
		    ra->prev_pos >> PAGE_SHIFT)
			mark_page_accessed(pages[0]);
		for (i = 1; i < pg_nr; i++)
			mark_page_accessed(pages[i]);