From: Sasha Levin Date: Tue, 18 Dec 2018 00:34:53 +0000 (-0500) Subject: patches for 4.4 X-Git-Tag: v4.19.11~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7b21162a455cce6e2adcce28c167589b50c85582;p=thirdparty%2Fkernel%2Fstable-queue.git patches for 4.4 Signed-off-by: Sasha Levin --- diff --git a/queue-4.4/lib-interval_tree_test.c-allow-full-tree-search.patch b/queue-4.4/lib-interval_tree_test.c-allow-full-tree-search.patch new file mode 100644 index 00000000000..c6fc2302420 --- /dev/null +++ b/queue-4.4/lib-interval_tree_test.c-allow-full-tree-search.patch @@ -0,0 +1,67 @@ +From bb7690c29a68a153a7a70098c84f506f14801c7a Mon Sep 17 00:00:00 2001 +From: Davidlohr Bueso +Date: Mon, 10 Jul 2017 15:51:52 -0700 +Subject: lib/interval_tree_test.c: allow full tree search + +[ Upstream commit c46ecce431ebe6b1a9551d1f530eb432dae5c39b ] + +... such that a user can specify visiting all the nodes in the tree +(intersects with the world). This is a nice opposite from the very +basic default query which is a single point. + +Link: http://lkml.kernel.org/r/20170518174936.20265-5-dave@stgolabs.net +Signed-off-by: Davidlohr Bueso +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +--- + lib/interval_tree_test.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c +index 1093f0496d5e..409383463879 100644 +--- a/lib/interval_tree_test.c ++++ b/lib/interval_tree_test.c +@@ -15,6 +15,7 @@ __param(int, perf_loops, 100000, "Number of iterations modifying the tree"); + + __param(int, nsearches, 100, "Number of searches to the interval tree"); + __param(int, search_loops, 10000, "Number of iterations searching the tree"); ++__param(bool, search_all, false, "Searches will iterate all nodes in the tree"); + + + static struct rb_root root = RB_ROOT; +@@ -24,13 +25,13 @@ static u32 *queries = NULL; + static struct rnd_state rnd; + + static inline unsigned long +-search(unsigned long query, struct rb_root *root) ++search(struct rb_root *root, unsigned long start, unsigned long last) + { + struct interval_tree_node *node; + unsigned long results = 0; + +- for (node = interval_tree_iter_first(root, query, query); node; +- node = interval_tree_iter_next(node, query, query)) ++ for (node = interval_tree_iter_first(root, start, last); node; ++ node = interval_tree_iter_next(node, start, last)) + results++; + return results; + } +@@ -99,8 +100,12 @@ static int interval_tree_test_init(void) + + results = 0; + for (i = 0; i < search_loops; i++) +- for (j = 0; j < nsearches; j++) +- results += search(queries[j], &root); ++ for (j = 0; j < nsearches; j++) { ++ unsigned long start = search_all ? 0 : queries[j]; ++ unsigned long last = search_all ? max_endpoint : queries[j]; ++ ++ results += search(&root, start, last); ++ } + + time2 = get_cycles(); + time = time2 - time1; +-- +2.19.1 + diff --git a/queue-4.4/lib-interval_tree_test.c-allow-users-to-limit-scope-.patch b/queue-4.4/lib-interval_tree_test.c-allow-users-to-limit-scope-.patch new file mode 100644 index 00000000000..b10cf7a36a8 --- /dev/null +++ b/queue-4.4/lib-interval_tree_test.c-allow-users-to-limit-scope-.patch @@ -0,0 +1,65 @@ +From ed3e2bdf858c765e17721e6332f28dfd65d8dd03 Mon Sep 17 00:00:00 2001 +From: Davidlohr Bueso +Date: Mon, 10 Jul 2017 15:51:49 -0700 +Subject: lib/interval_tree_test.c: allow users to limit scope of endpoint + +[ Upstream commit a8ec14d4f6aa8e245efacc992c8ee6ea0464ce2a ] + +Add a 'max_endpoint' parameter such that users may easily limit the size +of the intervals that are randomly generated. + +Link: http://lkml.kernel.org/r/20170518174936.20265-4-dave@stgolabs.net +Signed-off-by: Davidlohr Bueso +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +--- + lib/interval_tree_test.c | 23 +++++++++++++---------- + 1 file changed, 13 insertions(+), 10 deletions(-) + +diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c +index bababcf7ffdd..222c8010bda0 100644 +--- a/lib/interval_tree_test.c ++++ b/lib/interval_tree_test.c +@@ -17,6 +17,7 @@ __param(int, nsearches, 100, "Number of searches to the interval tree"); + __param(int, search_loops, 1000, "Number of iterations searching the tree"); + __param(bool, search_all, false, "Searches will iterate all nodes in the tree"); + ++__param(uint, max_endpoint, ~0, "Largest value for the interval's endpoint"); + + static struct rb_root root = RB_ROOT; + static struct interval_tree_node *nodes = NULL; +@@ -41,18 +42,20 @@ static void init(void) + int i; + + for (i = 0; i < nnodes; i++) { +- u32 a = prandom_u32_state(&rnd); +- u32 b = prandom_u32_state(&rnd); +- if (a <= b) { +- nodes[i].start = a; +- nodes[i].last = b; +- } else { +- nodes[i].start = b; +- nodes[i].last = a; +- } ++ u32 b = (prandom_u32_state(&rnd) >> 4) % max_endpoint; ++ u32 a = (prandom_u32_state(&rnd) >> 4) % b; ++ ++ nodes[i].start = a; ++ nodes[i].last = b; + } ++ ++ /* ++ * Limit the search scope to what the user defined. ++ * Otherwise we are merely measuring empty walks, ++ * which is pointless. ++ */ + for (i = 0; i < nsearches; i++) +- queries[i] = prandom_u32_state(&rnd); ++ queries[i] = (prandom_u32_state(&rnd) >> 4) % max_endpoint; + } + + static int interval_tree_test_init(void) +-- +2.19.1 + diff --git a/queue-4.4/lib-interval_tree_test.c-make-test-options-module-pa.patch b/queue-4.4/lib-interval_tree_test.c-make-test-options-module-pa.patch new file mode 100644 index 00000000000..b6c407db6f8 --- /dev/null +++ b/queue-4.4/lib-interval_tree_test.c-make-test-options-module-pa.patch @@ -0,0 +1,145 @@ +From b3b0a7572d903a8057aa8bf26a575610e80ac649 Mon Sep 17 00:00:00 2001 +From: Davidlohr Bueso +Date: Mon, 10 Jul 2017 15:51:46 -0700 +Subject: lib/interval_tree_test.c: make test options module parameters + +[ Upstream commit a54dae0338b7f01eb0f9c7571fb9b74f791d1c6b ] + +Allows for more flexible debugging. + +Link: http://lkml.kernel.org/r/20170518174936.20265-3-dave@stgolabs.net +Signed-off-by: Davidlohr Bueso +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +--- + lib/interval_tree_test.c | 57 ++++++++++++++++++++++++++++------------ + 1 file changed, 40 insertions(+), 17 deletions(-) + +diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c +index 245900b98c8e..1093f0496d5e 100644 +--- a/lib/interval_tree_test.c ++++ b/lib/interval_tree_test.c +@@ -1,16 +1,25 @@ + #include ++#include + #include + #include ++#include + #include + +-#define NODES 100 +-#define PERF_LOOPS 100000 +-#define SEARCHES 100 +-#define SEARCH_LOOPS 10000 ++#define __param(type, name, init, msg) \ ++ static type name = init; \ ++ module_param(name, type, 0444); \ ++ MODULE_PARM_DESC(name, msg); ++ ++__param(int, nnodes, 100, "Number of nodes in the interval tree"); ++__param(int, perf_loops, 100000, "Number of iterations modifying the tree"); ++ ++__param(int, nsearches, 100, "Number of searches to the interval tree"); ++__param(int, search_loops, 10000, "Number of iterations searching the tree"); ++ + + static struct rb_root root = RB_ROOT; +-static struct interval_tree_node nodes[NODES]; +-static u32 queries[SEARCHES]; ++static struct interval_tree_node *nodes = NULL; ++static u32 *queries = NULL; + + static struct rnd_state rnd; + +@@ -29,7 +38,8 @@ search(unsigned long query, struct rb_root *root) + static void init(void) + { + int i; +- for (i = 0; i < NODES; i++) { ++ ++ for (i = 0; i < nnodes; i++) { + u32 a = prandom_u32_state(&rnd); + u32 b = prandom_u32_state(&rnd); + if (a <= b) { +@@ -40,7 +50,7 @@ static void init(void) + nodes[i].last = a; + } + } +- for (i = 0; i < SEARCHES; i++) ++ for (i = 0; i < nsearches; i++) + queries[i] = prandom_u32_state(&rnd); + } + +@@ -50,6 +60,16 @@ static int interval_tree_test_init(void) + unsigned long results; + cycles_t time1, time2, time; + ++ nodes = kmalloc(nnodes * sizeof(struct interval_tree_node), GFP_KERNEL); ++ if (!nodes) ++ return -ENOMEM; ++ ++ queries = kmalloc(nsearches * sizeof(int), GFP_KERNEL); ++ if (!queries) { ++ kfree(nodes); ++ return -ENOMEM; ++ } ++ + printk(KERN_ALERT "interval tree insert/remove"); + + prandom_seed_state(&rnd, 3141592653589793238ULL); +@@ -57,39 +77,42 @@ static int interval_tree_test_init(void) + + time1 = get_cycles(); + +- for (i = 0; i < PERF_LOOPS; i++) { +- for (j = 0; j < NODES; j++) ++ for (i = 0; i < perf_loops; i++) { ++ for (j = 0; j < nnodes; j++) + interval_tree_insert(nodes + j, &root); +- for (j = 0; j < NODES; j++) ++ for (j = 0; j < nnodes; j++) + interval_tree_remove(nodes + j, &root); + } + + time2 = get_cycles(); + time = time2 - time1; + +- time = div_u64(time, PERF_LOOPS); ++ time = div_u64(time, perf_loops); + printk(" -> %llu cycles\n", (unsigned long long)time); + + printk(KERN_ALERT "interval tree search"); + +- for (j = 0; j < NODES; j++) ++ for (j = 0; j < nnodes; j++) + interval_tree_insert(nodes + j, &root); + + time1 = get_cycles(); + + results = 0; +- for (i = 0; i < SEARCH_LOOPS; i++) +- for (j = 0; j < SEARCHES; j++) ++ for (i = 0; i < search_loops; i++) ++ for (j = 0; j < nsearches; j++) + results += search(queries[j], &root); + + time2 = get_cycles(); + time = time2 - time1; + +- time = div_u64(time, SEARCH_LOOPS); +- results = div_u64(results, SEARCH_LOOPS); ++ time = div_u64(time, search_loops); ++ results = div_u64(results, search_loops); + printk(" -> %llu cycles (%lu results)\n", + (unsigned long long)time, results); + ++ kfree(queries); ++ kfree(nodes); ++ + return -EAGAIN; /* Fail will directly unload the module */ + } + +-- +2.19.1 + diff --git a/queue-4.4/lib-rbtree-test-lower-default-params.patch b/queue-4.4/lib-rbtree-test-lower-default-params.patch new file mode 100644 index 00000000000..dcf07ba9871 --- /dev/null +++ b/queue-4.4/lib-rbtree-test-lower-default-params.patch @@ -0,0 +1,58 @@ +From a4a61d53475d30277c65f0bac35d630af0bbf108 Mon Sep 17 00:00:00 2001 +From: Davidlohr Bueso +Date: Fri, 17 Nov 2017 15:28:27 -0800 +Subject: lib/rbtree-test: lower default params + +[ Upstream commit 0b548e33e6cb2bff240fdaf1783783be15c29080 ] + +Fengguang reported soft lockups while running the rbtree and interval +tree test modules. The logic for these tests all occur in init phase, +and we currently are pounding with the default values for number of +nodes and number of iterations of each test. Reduce the latter by two +orders of magnitude. This does not influence the value of the tests in +that one thousand times by default is enough to get the picture. + +Link: http://lkml.kernel.org/r/20171109161715.xai2dtwqw2frhkcm@linux-n805 +Signed-off-by: Davidlohr Bueso +Reported-by: Fengguang Wu +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +--- + lib/interval_tree_test.c | 4 ++-- + lib/rbtree_test.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c +index 409383463879..bababcf7ffdd 100644 +--- a/lib/interval_tree_test.c ++++ b/lib/interval_tree_test.c +@@ -11,10 +11,10 @@ + MODULE_PARM_DESC(name, msg); + + __param(int, nnodes, 100, "Number of nodes in the interval tree"); +-__param(int, perf_loops, 100000, "Number of iterations modifying the tree"); ++__param(int, perf_loops, 1000, "Number of iterations modifying the tree"); + + __param(int, nsearches, 100, "Number of searches to the interval tree"); +-__param(int, search_loops, 10000, "Number of iterations searching the tree"); ++__param(int, search_loops, 1000, "Number of iterations searching the tree"); + __param(bool, search_all, false, "Searches will iterate all nodes in the tree"); + + +diff --git a/lib/rbtree_test.c b/lib/rbtree_test.c +index e83331aa1b7f..afedd3770562 100644 +--- a/lib/rbtree_test.c ++++ b/lib/rbtree_test.c +@@ -11,7 +11,7 @@ + MODULE_PARM_DESC(name, msg); + + __param(int, nnodes, 100, "Number of nodes in the rb-tree"); +-__param(int, perf_loops, 100000, "Number of iterations modifying the rb-tree"); ++__param(int, perf_loops, 1000, "Number of iterations modifying the rb-tree"); + __param(int, check_loops, 100, "Number of iterations modifying and verifying the rb-tree"); + + struct test_node { +-- +2.19.1 + diff --git a/queue-4.4/lib-rbtree_test.c-make-input-module-parameters.patch b/queue-4.4/lib-rbtree_test.c-make-input-module-parameters.patch new file mode 100644 index 00000000000..56c18bfd89e --- /dev/null +++ b/queue-4.4/lib-rbtree_test.c-make-input-module-parameters.patch @@ -0,0 +1,155 @@ +From e20e600a8d2c98665ec9b80008f199a778acdd93 Mon Sep 17 00:00:00 2001 +From: Davidlohr Bueso +Date: Fri, 8 Sep 2017 16:14:46 -0700 +Subject: lib/rbtree_test.c: make input module parameters + +[ Upstream commit 223f8911eace60c787f8767c25148b80ece9732a ] + +Allows for more flexible debugging. + +Link: http://lkml.kernel.org/r/20170719014603.19029-5-dave@stgolabs.net +Signed-off-by: Davidlohr Bueso +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +--- + lib/rbtree_test.c | 55 +++++++++++++++++++++++++++++------------------ + 1 file changed, 34 insertions(+), 21 deletions(-) + +diff --git a/lib/rbtree_test.c b/lib/rbtree_test.c +index 8b3c9dc88262..e83331aa1b7f 100644 +--- a/lib/rbtree_test.c ++++ b/lib/rbtree_test.c +@@ -1,11 +1,18 @@ + #include ++#include + #include + #include ++#include + #include + +-#define NODES 100 +-#define PERF_LOOPS 100000 +-#define CHECK_LOOPS 100 ++#define __param(type, name, init, msg) \ ++ static type name = init; \ ++ module_param(name, type, 0444); \ ++ MODULE_PARM_DESC(name, msg); ++ ++__param(int, nnodes, 100, "Number of nodes in the rb-tree"); ++__param(int, perf_loops, 100000, "Number of iterations modifying the rb-tree"); ++__param(int, check_loops, 100, "Number of iterations modifying and verifying the rb-tree"); + + struct test_node { + u32 key; +@@ -17,7 +24,7 @@ struct test_node { + }; + + static struct rb_root root = RB_ROOT; +-static struct test_node nodes[NODES]; ++static struct test_node *nodes = NULL; + + static struct rnd_state rnd; + +@@ -95,7 +102,7 @@ static void erase_augmented(struct test_node *node, struct rb_root *root) + static void init(void) + { + int i; +- for (i = 0; i < NODES; i++) { ++ for (i = 0; i < nnodes; i++) { + nodes[i].key = prandom_u32_state(&rnd); + nodes[i].val = prandom_u32_state(&rnd); + } +@@ -177,6 +184,10 @@ static int __init rbtree_test_init(void) + int i, j; + cycles_t time1, time2, time; + ++ nodes = kmalloc(nnodes * sizeof(*nodes), GFP_KERNEL); ++ if (!nodes) ++ return -ENOMEM; ++ + printk(KERN_ALERT "rbtree testing"); + + prandom_seed_state(&rnd, 3141592653589793238ULL); +@@ -184,27 +195,27 @@ static int __init rbtree_test_init(void) + + time1 = get_cycles(); + +- for (i = 0; i < PERF_LOOPS; i++) { +- for (j = 0; j < NODES; j++) ++ for (i = 0; i < perf_loops; i++) { ++ for (j = 0; j < nnodes; j++) + insert(nodes + j, &root); +- for (j = 0; j < NODES; j++) ++ for (j = 0; j < nnodes; j++) + erase(nodes + j, &root); + } + + time2 = get_cycles(); + time = time2 - time1; + +- time = div_u64(time, PERF_LOOPS); ++ time = div_u64(time, perf_loops); + printk(" -> %llu cycles\n", (unsigned long long)time); + +- for (i = 0; i < CHECK_LOOPS; i++) { ++ for (i = 0; i < check_loops; i++) { + init(); +- for (j = 0; j < NODES; j++) { ++ for (j = 0; j < nnodes; j++) { + check(j); + insert(nodes + j, &root); + } +- for (j = 0; j < NODES; j++) { +- check(NODES - j); ++ for (j = 0; j < nnodes; j++) { ++ check(nnodes - j); + erase(nodes + j, &root); + } + check(0); +@@ -216,32 +227,34 @@ static int __init rbtree_test_init(void) + + time1 = get_cycles(); + +- for (i = 0; i < PERF_LOOPS; i++) { +- for (j = 0; j < NODES; j++) ++ for (i = 0; i < perf_loops; i++) { ++ for (j = 0; j < nnodes; j++) + insert_augmented(nodes + j, &root); +- for (j = 0; j < NODES; j++) ++ for (j = 0; j < nnodes; j++) + erase_augmented(nodes + j, &root); + } + + time2 = get_cycles(); + time = time2 - time1; + +- time = div_u64(time, PERF_LOOPS); ++ time = div_u64(time, perf_loops); + printk(" -> %llu cycles\n", (unsigned long long)time); + +- for (i = 0; i < CHECK_LOOPS; i++) { ++ for (i = 0; i < check_loops; i++) { + init(); +- for (j = 0; j < NODES; j++) { ++ for (j = 0; j < nnodes; j++) { + check_augmented(j); + insert_augmented(nodes + j, &root); + } +- for (j = 0; j < NODES; j++) { +- check_augmented(NODES - j); ++ for (j = 0; j < nnodes; j++) { ++ check_augmented(nnodes - j); + erase_augmented(nodes + j, &root); + } + check_augmented(0); + } + ++ kfree(nodes); ++ + return -EAGAIN; /* Fail will directly unload the module */ + } + +-- +2.19.1 + diff --git a/queue-4.4/powerpc-boot-fix-random-libfdt-related-build-errors.patch b/queue-4.4/powerpc-boot-fix-random-libfdt-related-build-errors.patch new file mode 100644 index 00000000000..fc196cd9a4d --- /dev/null +++ b/queue-4.4/powerpc-boot-fix-random-libfdt-related-build-errors.patch @@ -0,0 +1,58 @@ +From 70fc830fb11246b1f8834a42939097cb4e4c03a3 Mon Sep 17 00:00:00 2001 +From: Guenter Roeck +Date: Sat, 15 Dec 2018 07:30:39 -0800 +Subject: powerpc/boot: Fix random libfdt related build errors + +[ Upstream commit 64c3f648c25d108f346fdc96c15180c6b7d250e9 ] + +Once in a while I see build errors similar to the following +when building images from a clean tree. + + Building powerpc:virtex-ml507:44x/virtex5_defconfig ... failed + ------------ + Error log: + arch/powerpc/boot/treeboot-akebono.c:37:20: fatal error: + libfdt.h: No such file or directory + + Building powerpc:bamboo:smpdev:44x/bamboo_defconfig ... failed + ------------ + Error log: + arch/powerpc/boot/treeboot-akebono.c:37:20: fatal error: + libfdt.h: No such file or directory + + arch/powerpc/boot/treeboot-currituck.c:35:20: fatal error: + libfdt.h: No such file or directory + +Rebuilds will succeed. + +Turns out that several source files in arch/powerpc/boot/ include +libfdt.h, but Makefile dependencies are incomplete. Let's fix that. + +Signed-off-by: Guenter Roeck +Signed-off-by: Michael Ellerman +Signed-off-by: Sasha Levin +Signed-off-by: Greg Kroah-Hartman +[groeck: Backport to v4.4.y] +Signed-off-by: Guenter Roeck +Signed-off-by: Sasha Levin +--- + arch/powerpc/boot/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile +index 99e4487248ff..57003d1bd243 100644 +--- a/arch/powerpc/boot/Makefile ++++ b/arch/powerpc/boot/Makefile +@@ -70,7 +70,8 @@ $(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o): \ + libfdt := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c + libfdtheader := fdt.h libfdt.h libfdt_internal.h + +-$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o): \ ++$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o \ ++ treeboot-akebono.o treeboot-currituck.o treeboot-iss4xx.o): \ + $(addprefix $(obj)/,$(libfdtheader)) + + src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \ +-- +2.19.1 + diff --git a/queue-4.4/series b/queue-4.4/series new file mode 100644 index 00000000000..f85f3e7beab --- /dev/null +++ b/queue-4.4/series @@ -0,0 +1,7 @@ +lib-interval_tree_test.c-make-test-options-module-pa.patch +lib-interval_tree_test.c-allow-full-tree-search.patch +lib-rbtree_test.c-make-input-module-parameters.patch +lib-rbtree-test-lower-default-params.patch +lib-interval_tree_test.c-allow-users-to-limit-scope-.patch +timer-debug-change-proc-timer_list-from-0444-to-0400.patch +powerpc-boot-fix-random-libfdt-related-build-errors.patch diff --git a/queue-4.4/timer-debug-change-proc-timer_list-from-0444-to-0400.patch b/queue-4.4/timer-debug-change-proc-timer_list-from-0444-to-0400.patch new file mode 100644 index 00000000000..7b0ecc8e23b --- /dev/null +++ b/queue-4.4/timer-debug-change-proc-timer_list-from-0444-to-0400.patch @@ -0,0 +1,36 @@ +From 2dda5b6ab1e54d13a8b5f914722f0c48f59d893f Mon Sep 17 00:00:00 2001 +From: Ingo Molnar +Date: Mon, 13 Nov 2017 07:15:41 +0100 +Subject: timer/debug: Change /proc/timer_list from 0444 to 0400 + +[ Upstream commit 8e7df2b5b7f245c9bd11064712db5cb69044a362 ] + +While it uses %pK, there's still few reasons to read this file +as non-root. + +Suggested-by: Linus Torvalds +Acked-by: Thomas Gleixner +Cc: Peter Zijlstra +Cc: linux-kernel@vger.kernel.org +Signed-off-by: Ingo Molnar +Signed-off-by: Sasha Levin +--- + kernel/time/timer_list.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c +index ef4f16e81283..1407ed20ea93 100644 +--- a/kernel/time/timer_list.c ++++ b/kernel/time/timer_list.c +@@ -399,7 +399,7 @@ static int __init init_timer_list_procfs(void) + { + struct proc_dir_entry *pe; + +- pe = proc_create("timer_list", 0444, NULL, &timer_list_fops); ++ pe = proc_create("timer_list", 0400, NULL, &timer_list_fops); + if (!pe) + return -ENOMEM; + return 0; +-- +2.19.1 +