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
|