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

Commit 0b94e97a authored by Matthew Wilcox's avatar Matthew Wilcox Committed by Matthew Wilcox
Browse files

Use lock_page_killable



Replacing lock_page with lock_page_killable in do_generic_mapping_read()
allows us to kill `cat' of a file on an NFS-mounted filesystem

Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
parent 2687a356
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -982,7 +982,8 @@ page_ok:

page_not_up_to_date:
		/* Get exclusive access to the page ... */
		lock_page(page);
		if (lock_page_killable(page))
			goto readpage_eio;

		/* Did it get truncated before we got the lock? */
		if (!page->mapping) {
@@ -1010,7 +1011,8 @@ readpage:
		}

		if (!PageUptodate(page)) {
			lock_page(page);
			if (lock_page_killable(page))
				goto readpage_eio;
			if (!PageUptodate(page)) {
				if (page->mapping == NULL) {
					/*
@@ -1021,15 +1023,16 @@ readpage:
					goto find_page;
				}
				unlock_page(page);
				error = -EIO;
				shrink_readahead_size_eio(filp, ra);
				goto readpage_error;
				goto readpage_eio;
			}
			unlock_page(page);
		}

		goto page_ok;

readpage_eio:
		error = -EIO;
readpage_error:
		/* UHHUH! A synchronous read error occurred. Report it */
		desc->error = error;