From: Xiaoming Ni <nixiaoming@huawei.com>
To: <mcgrof@kernel.org>, <keescook@chromium.org>,
<yzaikin@google.com>, <adobriyan@gmail.com>, <mingo@kernel.org>,
<peterz@infradead.org>, <akpm@linux-foundation.org>,
<yamada.masahiro@socionext.com>, <bauerman@linux.ibm.com>,
<gregkh@linuxfoundation.org>, <skhan@linuxfoundation.org>,
<dvyukov@google.com>, <svens@stackframe.org>,
<joel@joelfernandes.org>, <tglx@linutronix.de>,
<Jisheng.Zhang@synaptics.com>, <pmladek@suse.com>,
<bigeasy@linutronix.de>
Cc: <linux-kernel@vger.kernel.org>, <linux-fsdevel@vger.kernel.org>,
<nixiaoming@huawei.com>, <wangle6@huawei.com>
Subject: [PATCH 4/4] sysctl: Add register_sysctl_init() interface
Date: Fri, 15 May 2020 12:33:44 +0800 [thread overview]
Message-ID: <1589517224-123928-5-git-send-email-nixiaoming@huawei.com> (raw)
In-Reply-To: <1589517224-123928-1-git-send-email-nixiaoming@huawei.com>
In order to eliminate the duplicate code for registering the sysctl
interface during the initialization of each feature, add the
register_sysctl_init() interface
Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>
---
include/linux/sysctl.h | 2 ++
kernel/hung_task_sysctl.c | 15 +--------------
kernel/sysctl.c | 19 +++++++++++++++++++
kernel/watchdog.c | 18 +-----------------
4 files changed, 23 insertions(+), 31 deletions(-)
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 6d741d6..3cdbe89 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -207,6 +207,8 @@ struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path,
void unregister_sysctl_table(struct ctl_table_header * table);
extern int sysctl_init(void);
+extern void register_sysctl_init(const char *path, struct ctl_table *table,
+ const char *table_name);
extern struct ctl_table sysctl_mount_point[];
diff --git a/kernel/hung_task_sysctl.c b/kernel/hung_task_sysctl.c
index 62a51f5..14d2ed6 100644
--- a/kernel/hung_task_sysctl.c
+++ b/kernel/hung_task_sysctl.c
@@ -59,21 +59,8 @@
{}
};
-/*
- * The hung task sysctl has a default value.
- * Even if register_sysctl() fails, it does not affect the main function of
- * the hung task. At the same time, during the system initialization phase,
- * malloc small memory will almost never fail.
- * So the return value is ignored here
- */
void __init hung_task_sysctl_init(void)
{
- struct ctl_table_header *srt = register_sysctl("kernel", hung_task_sysctls);
-
- if (unlikely(!srt)) {
- pr_err("%s fail\n", __func__);
- return;
- }
- kmemleak_not_leak(srt);
+ register_sysctl_init("kernel", hung_task_sysctls, "hung_task_sysctls");
}
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index e394990..0a09742 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -1823,6 +1823,25 @@ int __init sysctl_init(void)
return 0;
}
+/*
+ * The sysctl interface is used to modify the interface value,
+ * but the feature interface has default values. Even if register_sysctl fails,
+ * the feature body function can also run. At the same time, malloc small
+ * fragment of memory during the system initialization phase, almost does
+ * not fail. Therefore, the function return is designed as void
+ */
+void __init register_sysctl_init(const char *path, struct ctl_table *table,
+ const char *table_name)
+{
+ struct ctl_table_header *hdr = register_sysctl(path, table);
+
+ if (unlikely(!hdr)) {
+ pr_err("failed when register_sysctl %s to %s\n", table_name, path);
+ return;
+ }
+ kmemleak_not_leak(hdr);
+}
+
#endif /* CONFIG_SYSCTL */
/*
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index 05e1d58..c1bebb1 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -23,9 +23,6 @@
#include <linux/sched/debug.h>
#include <linux/sched/isolation.h>
#include <linux/stop_machine.h>
-#ifdef CONFIG_SYSCTL
-#include <linux/kmemleak.h>
-#endif
#include <asm/irq_regs.h>
#include <linux/kvm_para.h>
@@ -853,22 +850,9 @@ int proc_watchdog_cpumask(struct ctl_table *table, int write,
{}
};
-/*
- * The watchdog sysctl has a default value.
- * Even if register_sysctl() fails, it does not affect the main function of
- * the watchdog. At the same time, during the system initialization phase,
- * malloc small memory will almost never fail.
- * So the return value is ignored here
- */
static void __init watchdog_sysctl_init(void)
{
- struct ctl_table_header *p = register_sysctl("kernel", watchdog_sysctls);
-
- if (unlikely(!p)) {
- pr_err("%s fail\n", __func__);
- return;
- }
- kmemleak_not_leak(p);
+ register_sysctl_init("kernel", watchdog_sysctls, "watchdog_sysctls");
}
#else
#define watchdog_sysctl_init() do { } while (0)
--
1.8.5.6
next prev parent reply other threads:[~2020-05-15 4:34 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-15 4:33 [PATCH 0/4] Move the sysctl interface to the corresponding feature code file Xiaoming Ni
2020-05-15 4:33 ` [PATCH 1/4] hung_task: Move hung_task sysctl interface to hung_task_sysctl.c Xiaoming Ni
2020-05-15 8:04 ` Kees Cook
2020-05-15 8:56 ` Xiaoming Ni
2020-05-15 16:03 ` Kees Cook
2020-05-15 20:21 ` Luis Chamberlain
2020-05-15 4:33 ` [PATCH 2/4] proc/sysctl: add shared variables -1 Xiaoming Ni
2020-05-15 8:06 ` Kees Cook
2020-05-15 9:06 ` Xiaoming Ni
2020-05-15 16:05 ` Kees Cook
2020-05-16 2:32 ` Xiaoming Ni
2020-05-16 2:47 ` Kees Cook
2020-05-16 3:05 ` Xiaoming Ni
2020-05-17 2:38 ` Kees Cook
2020-05-15 4:33 ` [PATCH 3/4] watchdog: move watchdog sysctl to watchdog.c Xiaoming Ni
2020-05-15 8:09 ` Kees Cook
2020-05-15 9:17 ` Xiaoming Ni
2020-05-15 4:33 ` Xiaoming Ni [this message]
2020-05-15 8:10 ` [PATCH 4/4] sysctl: Add register_sysctl_init() interface Kees Cook
2020-05-15 9:39 ` Xiaoming Ni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1589517224-123928-5-git-send-email-nixiaoming@huawei.com \
--to=nixiaoming@huawei.com \
--cc=Jisheng.Zhang@synaptics.com \
--cc=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=bauerman@linux.ibm.com \
--cc=bigeasy@linutronix.de \
--cc=dvyukov@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=joel@joelfernandes.org \
--cc=keescook@chromium.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pmladek@suse.com \
--cc=skhan@linuxfoundation.org \
--cc=svens@stackframe.org \
--cc=tglx@linutronix.de \
--cc=wangle6@huawei.com \
--cc=yamada.masahiro@socionext.com \
--cc=yzaikin@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.