[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1407936117-2985-1-git-send-email-avagin@openvz.org>
Date: Wed, 13 Aug 2014 17:21:57 +0400
From: Andrey Vagin <avagin@...nvz.org>
To: linux-kernel@...r.kernel.org
Cc: Andrey Vagin <avagin@...nvz.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Mathias Krause <minipli@...glemail.com>,
Manfred Spraul <manfred@...orfullife.com>,
Joe Perches <joe@...ches.com>,
Davidlohr Bueso <davidlohr@...com>
Subject: [PATCH] ipc: always handle a new value of auto_msgmni
proc_dointvec_minmax() returns zero, if a new value has been set.
So we don't need to check all charectes have been handled.
Below you can find two examples. In the new value has not been
handled properly.
$ strace ./a.out
open("/proc/sys/kernel/auto_msgmni", O_WRONLY) = 3
write(3, "0\n\0", 3) = 2
close(3) = 0
exit_group(0)
$ cat /sys/kernel/debug/tracing/trace
$strace ./a.out
open("/proc/sys/kernel/auto_msgmni", O_WRONLY) = 3
write(3, "0\n", 2) = 2
close(3) = 0
$ cat /sys/kernel/debug/tracing/trace
a.out-697 [000] .... 3280.998235: unregister_ipcns_notifier <-proc_ipcauto_dointvec_minmax
Fixes: 9eefe520c814 ("ipc: do not use a negative value to re-enable msgmni automatic recomputin")
Cc: Andrew Morton <akpm@...ux-foundation.org>
Cc: Mathias Krause <minipli@...glemail.com>
Cc: Manfred Spraul <manfred@...orfullife.com>
Cc: Joe Perches <joe@...ches.com>
Cc: Davidlohr Bueso <davidlohr@...com>
Signed-off-by: Andrey Vagin <avagin@...nvz.org>
---
ipc/ipc_sysctl.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/ipc/ipc_sysctl.c b/ipc/ipc_sysctl.c
index c3f0326..e8075b2 100644
--- a/ipc/ipc_sysctl.c
+++ b/ipc/ipc_sysctl.c
@@ -123,7 +123,6 @@ static int proc_ipcauto_dointvec_minmax(struct ctl_table *table, int write,
void __user *buffer, size_t *lenp, loff_t *ppos)
{
struct ctl_table ipc_table;
- size_t lenp_bef = *lenp;
int oldval;
int rc;
@@ -133,7 +132,7 @@ static int proc_ipcauto_dointvec_minmax(struct ctl_table *table, int write,
rc = proc_dointvec_minmax(&ipc_table, write, buffer, lenp, ppos);
- if (write && !rc && lenp_bef == *lenp) {
+ if (write && !rc) {
int newval = *((int *)(ipc_table.data));
/*
* The file "auto_msgmni" has correctly been set.
--
1.9.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists