Re: [PATCH]: md: Initialize ctl_name field of table raid_root_table/raid_dir_table to avoid dump_trace info in debug kernel
From: Eric W. Biederman <hidden>
Date: 2012-03-14 02:10:46
Also in:
lkml
NeilBrown [off-list ref] writes:
quoted hunk
On Mon, 12 Mar 2012 11:58:53 +0800 qing gu [off-list ref] wrote:quoted
This patch is used to dispense trace info when system boots with debug kernel. I have verified it on RHEL6.2 & SLES11.2. Both work fine. In the failure case, system logs that: /Feb 21 19:33:55 nsgbj-216-137 kernel: sysctl_check_dir: failed: /dev ref: /dev .7 Feb 21 19:33:55 nsgbj-216-137 kernel: sysctl table check failed: /dev Inconsistent directory names Feb 21 19:33:55 nsgbj-216-137 kernel: Pid: 1, comm: swapper Not tainted 2.6.32-220.el6.x86_64.debug #1 Feb 21 19:33:55 nsgbj-216-137 kernel: Call Trace: Feb 21 19:33:55 nsgbj-216-137 kernel: [<ffffffff810a2029>] ? set_fail+0x59/0x60 Feb 21 19:33:55 nsgbj-216-137 kernel: [<ffffffff810a23d4>] ? sysctl_check_table+0x3a4/0x680 ... / As you can see, system failed with mismatch /sysctl_check_dir: failed: /dev ref: /dev .7/ Signed-off-by: Neil Gu <redacted> -----------------------------------------------------------(please put patches inline in your email - it makes them easier to reply to) scripts/kconfig/Makefile | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)diff --git a/drivers/md/md.c b/drivers/md/md.c index ce88755..9630ad3 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c@@ -129,6 +129,7 @@ static ctl_table raid_table[] = { static ctl_table raid_dir_table[] = { { + .ctl_name = DEV_RAID, .procname = "raid", .maxlen = 0, .mode = S_IRUGO|S_IXUGO,@@ -139,6 +140,7 @@ static ctl_table raid_dir_table[] = { static ctl_table raid_root_table[] = { { + .ctl_name = CTL_DEV, .procname = "dev", .maxlen = 0, .mode = 0555,These lines were removed in November 2009 by Eric Biederman in commit 894d2491153a9f8270dbed21175d06fde4eba6c7 So I'm not keen on adding them back without understanding the history. Eric: Do we need these after all?
For the main trunk no. The .ctl_name field no longer exists. kernel/binary_sysctl.c is used to provide backwards compatibility with the old binary names. There might be a point for doing something in -stable or someone's enterprise kernel if some messed up set of backports were merged. Eric