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

Commit b86b413a authored by Richard Weinberger's avatar Richard Weinberger
Browse files

hostfs: Set page flags in hostfs_readpage() correctly



In case of an error set the page error flag and clear the up-to-date
flag.
If the read was successful clear the error flag unconditionally.

Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
parent bd1052a2
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -445,24 +445,26 @@ static int hostfs_readpage(struct file *file, struct page *page)
{
	char *buffer;
	long long start;
	int bytes_read, ret;
	int bytes_read, ret = 0;

	start = (long long) page->index << PAGE_CACHE_SHIFT;
	buffer = kmap(page);
	bytes_read = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer,
			PAGE_CACHE_SIZE);
	if (bytes_read < 0) {
		ClearPageUptodate(page);
		SetPageError(page);
		ret = bytes_read;
		goto out;
	}

	memset(buffer + bytes_read, 0, PAGE_CACHE_SIZE - bytes_read);

	flush_dcache_page(page);
	ClearPageError(page);
	SetPageUptodate(page);
	if (PageError(page)) ClearPageError(page);
	ret = 0;

 out:
	flush_dcache_page(page);
	kunmap(page);
	unlock_page(page);
	return ret;