summarylogtreecommitdiffstats
path: root/0002-Linux-4.5-no-highmem-in-symlink-ops.patch
blob: 7e42d62ef06466eae5ab372d485f8e1f5707fa84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
From fc08da3fd6a93a6de215fc6cb9f3a858dea3bfc0 Mon Sep 17 00:00:00 2001
From: Benjamin Kaduk <kaduk@mit.edu>
Date: Sun, 1 May 2016 19:04:45 -0400
Subject: [PATCH 2/5] Linux 4.5: no highmem in symlink ops

Symlink bodies in the pagecache should not be in highmem, as
upstream converted in commit 21fc61c73.

Change-Id: I1e4c3c51308df096cdfa4d5e7b16279e275e7f41
---
 acinclude.m4                 | 3 +++
 src/afs/LINUX/osi_vnodeops.c | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/acinclude.m4 b/acinclude.m4
index 4f8e2c0..c8a7ceb 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1034,6 +1034,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
 				     [#include <linux/kernel.h>
 				      #include <linux/kthread.h>],
 				     [kthread_run(NULL, NULL, "test");])
+		 AC_CHECK_LINUX_FUNC([inode_nohighmem],
+				     [#include <linux/fs.h>],
+				     [inode_nohighmem(NULL);])
 
 		 dnl Consequences - things which get set as a result of the
 		 dnl                above tests
diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
index 1b99c94..2f753dd 100644
--- a/src/afs/LINUX/osi_vnodeops.c
+++ b/src/afs/LINUX/osi_vnodeops.c
@@ -3143,6 +3143,9 @@ afs_fill_inode(struct inode *ip, struct vattr *vattr)
 
     } else if (S_ISLNK(ip->i_mode)) {
 	ip->i_op = &afs_symlink_iops;
+#if defined(HAVE_LINUX_INODE_NOHIGHMEM)
+	inode_nohighmem(ip);
+#endif
 #if defined(USABLE_KERNEL_PAGE_SYMLINK_CACHE)
 	ip->i_data.a_ops = &afs_symlink_aops;
 	ip->i_mapping = &ip->i_data;
-- 
2.8.2