--- /dev/null
+From 4cd13504652d28e16bf186c6bb2bbb3725369383 Mon Sep 17 00:00:00 2001
+From: Hugh Dickins <hugh@veritas.com>
+Date: Thu, 3 Apr 2008 23:35:22 +0100
+Message-ID: <Pine.LNX.4.64.0804291840200.11253@blonde.site>
+Subject: splice: use mapping_gfp_mask
+
+upstream commit: 4cd13504652d28e16bf186c6bb2bbb3725369383
+
+The loop block driver is careful to mask __GFP_IO|__GFP_FS out of its
+mapping_gfp_mask, to avoid hangs under memory pressure. But nowadays
+it uses splice, usually going through __generic_file_splice_read. That
+must use mapping_gfp_mask instead of GFP_KERNEL to avoid those hangs.
+
+Signed-off-by: Hugh Dickins <hugh@veritas.com>
+Cc: Jens Axboe <jens.axboe@oracle.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ fs/splice.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -314,7 +314,7 @@ __generic_file_splice_read(struct file *
+ break;
+
+ error = add_to_page_cache_lru(page, mapping, index,
+- GFP_KERNEL);
++ mapping_gfp_mask(mapping));
+ if (unlikely(error)) {
+ page_cache_release(page);
+ if (error == -EEXIST)