Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56f91aad authored by Li Wang's avatar Li Wang Committed by Sage Weil
Browse files

ceph: Avoid data inconsistency due to d-cache aliasing in readpage()



If the length of data to be read in readpage() is exactly
PAGE_CACHE_SIZE, the original code does not flush d-cache
for data consistency after finishing reading. This patches fixes
this.

Signed-off-by: default avatarLi Wang <liwang@ubuntukylin.com>
Signed-off-by: default avatarSage Weil <sage@inktank.com>
parent 86b58d13
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -210,9 +210,13 @@ static int readpage_nounlock(struct file *filp, struct page *page)
	if (err < 0) {
		SetPageError(page);
		goto out;
	} else if (err < PAGE_CACHE_SIZE) {
	} else {
		if (err < PAGE_CACHE_SIZE) {
		/* zero fill remainder of page */
			zero_user_segment(page, err, PAGE_CACHE_SIZE);
		} else {
			flush_dcache_page(page);
		}
	}
	SetPageUptodate(page);