Message ID | 20230928-jag-sysctl_remove_empty_elem_drivers-v1-0-e59120fca9f9@samsung.com |
---|---|
State | New |
Headers | show |
On Thu, Sep 28, 2023 at 6:20 AM Joel Granados via B4 Relay <devnull+j.granados.samsung.com@kernel.org> wrote: > > From: Joel Granados <j.granados@samsung.com> > > This commit comes at the tail end of a greater effort to remove the > empty elements at the end of the ctl_table arrays (sentinels) which > will reduce the overall build time size of the kernel and run time > memory bloat by ~64 bytes per sentinel (further information Link : > https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/) > > Remove sentinel from raid_table > > Signed-off-by: Joel Granados <j.granados@samsung.com> > --- > drivers/md/md.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/md/md.c b/drivers/md/md.c > index a104a025084d..3866d8f754a0 100644 > --- a/drivers/md/md.c > +++ b/drivers/md/md.c > @@ -304,8 +304,7 @@ static struct ctl_table raid_table[] = { > .maxlen = sizeof(int), > .mode = S_IRUGO|S_IWUSR, > .proc_handler = proc_dointvec, > - }, > - { } > + } > }; Please keep "}," as Greg suggested. Otherwise, Acked-by: Song Liu <song@kernel.org> Thanks, Song
Please change the prefix to "Drivers: hv:" in the subject line in the two patches. On Thu, Sep 28, 2023 at 03:21:39PM +0200, Joel Granados via B4 Relay wrote: > From: Joel Granados <j.granados@samsung.com> > > This commit comes at the tail end of a greater effort to remove the > empty elements at the end of the ctl_table arrays (sentinels) which > will reduce the overall build time size of the kernel and run time > memory bloat by ~64 bytes per sentinel (further information Link : > https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/) > > Remove sentinel from hv_ctl_table > > Signed-off-by: Joel Granados <j.granados@samsung.com> > --- > drivers/hv/hv_common.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c > index ccad7bca3fd3..bc7d678030aa 100644 > --- a/drivers/hv/hv_common.c > +++ b/drivers/hv/hv_common.c > @@ -147,8 +147,7 @@ static struct ctl_table hv_ctl_table[] = { > .proc_handler = proc_dointvec_minmax, > .extra1 = SYSCTL_ZERO, > .extra2 = SYSCTL_ONE > - }, > - {} > + } Please keep the comma at the end. > }; > > static int hv_die_panic_notify_crash(struct notifier_block *self, > > -- > 2.30.2 >
Le 28/09/2023 à 15:21, Joel Granados via B4 Relay a écrit : > From: Joel Granados <j.granados@samsung.com> Automatic test fails on powerpc, see https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20230928-jag-sysctl_remove_empty_elem_drivers-v1-15-e59120fca9f9@samsung.com/ Kernel attempted to read user page (1a111316) - exploit attempt? (uid: 0) BUG: Unable to handle kernel data access on read at 0x1a111316 Faulting instruction address: 0xc0545338 Oops: Kernel access of bad area, sig: 11 [#1] BE PAGE_SIZE=4K PowerPC 44x Platform Modules linked in: CPU: 0 PID: 1 Comm: swapper Not tainted 6.5.0-rc6-gdef13277bacb #1 Hardware name: amcc,bamboo 440GR Rev. B 0x422218d3 PowerPC 44x Platform NIP: c0545338 LR: c0548468 CTR: ffffffff REGS: c084fae0 TRAP: 0300 Not tainted (6.5.0-rc6-gdef13277bacb) MSR: 00021000 <CE,ME> CR: 84004288 XER: 00000000 DEAR: 1a111316 ESR: 00000000 GPR00: c0548468 c084fbd0 c0888000 c084fc99 00000000 c084fc7c 1a110316 000affff GPR08: ffffffff c084fd18 1a111316 04ffffff 22000282 00000000 c00027c0 00000000 GPR16: 00000000 00000000 c0040000 c003d544 00000001 c003eb2c 096023d4 00000000 GPR24: c0636502 c0636502 c084fc74 c0588510 c084fc68 c084fc7c c084fc99 00000002 NIP [c0545338] string+0x78/0x148 LR [c0548468] vsnprintf+0x3d8/0x824 Call Trace: [c084fbd0] [c084fc7c] 0xc084fc7c (unreliable) [c084fbe0] [c0548468] vsnprintf+0x3d8/0x824 [c084fc30] [c0072dec] vprintk_store+0x17c/0x4c8 [c084fcc0] [c007322c] vprintk_emit+0xf4/0x2a0 [c084fd00] [c0073d04] _printk+0x60/0x88 [c084fd40] [c01ab63c] sysctl_err+0x78/0xa4 [c084fd80] [c01ab404] __register_sysctl_table+0x6a0/0x6c4 [c084fde0] [c06a585c] __register_sysctl_init+0x30/0x78 [c084fe00] [c06a8cc8] tty_init+0x44/0x168 [c084fe30] [c00023c4] do_one_initcall+0x64/0x2a0 [c084fea0] [c068f060] kernel_init_freeable+0x184/0x230 [c084fee0] [c00027e4] kernel_init+0x24/0x124 [c084ff00] [c000f1fc] ret_from_kernel_user_thread+0x14/0x1c --- interrupt: 0 at 0x0 NIP: 00000000 LR: 00000000 CTR: 00000000 REGS: c084ff10 TRAP: 0000 Not tainted (6.5.0-rc6-gdef13277bacb) MSR: 00000000 <> CR: 00000000 XER: 00000000 GPR00: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 GPR08: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 GPR24: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 NIP [00000000] 0x0 LR [00000000] 0x0 --- interrupt: 0 Code: 91610008 90e1000c 4bffd0b5 80010014 38210010 7c0803a6 4e800020 409d0008 99230000 38630001 38840001 4240ffd0 <7d2a20ae> 7f851840 5528063e 2c080000 ---[ end trace 0000000000000000 ]--- note: swapper[1] exited with irqs disabled Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b > > What? > These commits remove the sentinel element (last empty element) from the > sysctl arrays of all the files under the "drivers/" directory that use a > sysctl array for registration. The merging of the preparation patches > (in https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/) > to mainline allows us to just remove sentinel elements without changing > behavior (more info here [1]). > > These commits are part of a bigger set (here > https://github.com/Joelgranados/linux/tree/tag/sysctl_remove_empty_elem_V4) > that remove the ctl_table sentinel. Make the review process easier by > chunking the commits into manageable pieces. Each chunk can be reviewed > separately without noise from parallel sets. > > Now that the architecture chunk has been mostly reviewed [6], we send > the "drivers/" directory. Once this one is done, it will be follwed by > "fs/*", "kernel/*", "net/*" and miscellaneous. The final set will remove > the unneeded check for ->procname == NULL. > > Why? > By removing the sysctl sentinel elements we avoid kernel bloat as > ctl_table arrays get moved out of kernel/sysctl.c into their own > respective subsystems. This move was started long ago to avoid merge > conflicts; the sentinel removal bit came after Mathew Wilcox suggested > it to avoid bloating the kernel by one element as arrays moved out. This > patchset will reduce the overall build time size of the kernel and run > time memory bloat by about ~64 bytes per declared ctl_table array. I > have consolidated some links that shed light on the history of this > effort [2]. > > Testing: > * Ran sysctl selftests (./tools/testing/selftests/sysctl/sysctl.sh) > * Ran this through 0-day with no errors or warnings > > Size saving after removing all sentinels: > These are the bytes that we save after removing all the sentinels > (this plus all the other chunks). I included them to get an idea of > how much memory we are talking about. > * bloat-o-meter: > - The "yesall" configuration results save 9158 bytes > https://lore.kernel.org/all/20230621091000.424843-1-j.granados@samsung.com/ > - The "tiny" config + CONFIG_SYSCTL save 1215 bytes > https://lore.kernel.org/all/20230809105006.1198165-1-j.granados@samsung.com/ > * memory usage: > In memory savings are measured to be 7296 bytes. (here is how to > measure [3]) > > Size saving after this patchset: > * bloat-o-meter > - The "yesall" config saves 2432 bytes [4] > - The "tiny" config saves 64 bytes [5] > * memory usage: > In this case there were no bytes saved because I do not have any > of the drivers in the patch. To measure it comment the printk in > `new_dir` and uncomment the if conditional in `new_links` [3]. > > Comments/feedback greatly appreciated > > Best > Joel > > [1] > We are able to remove a sentinel table without behavioral change by > introducing a table_size argument in the same place where procname is > checked for NULL. The idea is for it to keep stopping when it hits > ->procname == NULL, while the sentinel is still present. And when the > sentinel is removed, it will stop on the table_size. You can go to > (https://lore.kernel.org/all/20230809105006.1198165-1-j.granados@samsung.com/) > for more information. > > [2] > Links Related to the ctl_table sentinel removal: > * Good summary from Luis sent with the "pull request" for the > preparation patches. > https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/ > * Another very good summary from Luis. > https://lore.kernel.org/all/ZMFizKFkVxUFtSqa@bombadil.infradead.org/ > * This is a patch set that replaces register_sysctl_table with register_sysctl > https://lore.kernel.org/all/20230302204612.782387-1-mcgrof@kernel.org/ > * Patch set to deprecate register_sysctl_paths() > https://lore.kernel.org/all/20230302202826.776286-1-mcgrof@kernel.org/ > * Here there is an explicit expectation for the removal of the sentinel element. > https://lore.kernel.org/all/20230321130908.6972-1-frank.li@vivo.com > * The "ARRAY_SIZE" approach was mentioned (proposed?) in this thread > https://lore.kernel.org/all/20220220060626.15885-1-tangmeng@uniontech.com > > [3] > To measure the in memory savings apply this on top of this patchset. > > " > diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c > index c88854df0b62..e0073a627bac 100644 > --- a/fs/proc/proc_sysctl.c > +++ b/fs/proc/proc_sysctl.c > @@ -976,6 +976,8 @@ static struct ctl_dir *new_dir(struct ctl_table_set *set, > table[0].procname = new_name; > table[0].mode = S_IFDIR|S_IRUGO|S_IXUGO; > init_header(&new->header, set->dir.header.root, set, node, table, 1); > + // Counts additional sentinel used for each new dir. > + printk("%ld sysctl saved mem kzalloc \n", sizeof(struct ctl_table)); > > return new; > } > @@ -1199,6 +1201,9 @@ static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table_ > link_name += len; > link++; > } > + // Counts additional sentinel used for each new registration > + //if ((head->ctl_table + head->ctl_table_size)->procname) > + printk("%ld sysctl saved mem kzalloc \n", sizeof(struct ctl_table)); > init_header(links, dir->header.root, dir->header.set, node, link_table, > head->ctl_table_size); > links->nreg = nr_entries; > " > and then run the following bash script in the kernel: > > accum=0 > for n in $(dmesg | grep kzalloc | awk '{print $3}') ; do > echo $n > accum=$(calc "$accum + $n") > done > echo $accum > > [4] > add/remove: 0/0 grow/shrink: 0/21 up/down: 0/-2432 (-2432) > Function old new delta > xpc_sys_xpc_hb 192 128 -64 > xpc_sys_xpc 128 64 -64 > vrf_table 128 64 -64 > ucma_ctl_table 128 64 -64 > tty_table 192 128 -64 > sg_sysctls 128 64 -64 > scsi_table 128 64 -64 > random_table 448 384 -64 > raid_table 192 128 -64 > oa_table 192 128 -64 > mac_hid_files 256 192 -64 > iwcm_ctl_table 128 64 -64 > ipmi_table 128 64 -64 > hv_ctl_table 128 64 -64 > hpet_table 128 64 -64 > firmware_config_table 192 128 -64 > cdrom_table 448 384 -64 > balloon_table 128 64 -64 > parport_sysctl_template 912 720 -192 > parport_default_sysctl_table 584 136 -448 > parport_device_sysctl_template 776 136 -640 > Total: Before=429940038, After=429937606, chg -0.00% > > [5] > add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-64 (-64) > Function old new delta > random_table 448 384 -64 > Total: Before=1885527, After=1885463, chg -0.00% > > [6] https://lore.kernel.org/all/20230913-jag-sysctl_remove_empty_elem_arch-v2-0-d1bd13a29bae@samsung.com/ > > Signed-off-by: Joel Granados <j.granados@samsung.com> > > --- > > --- > Joel Granados (15): > cdrom: Remove now superfluous sentinel element from ctl_table array > hpet: Remove now superfluous sentinel element from ctl_table array > xen: Remove now superfluous sentinel element from ctl_table array > tty: Remove now superfluous sentinel element from ctl_table array > scsi: Remove now superfluous sentinel element from ctl_table array > parport: Remove the now superfluous sentinel element from ctl_table array > macintosh: Remove the now superfluous sentinel element from ctl_table array > infiniband: Remove the now superfluous sentinel element from ctl_table array > char-misc: Remove the now superfluous sentinel element from ctl_table array > vrf: Remove the now superfluous sentinel element from ctl_table array > sgi-xp: Remove the now superfluous sentinel element from ctl_table array > fw loader: Remove the now superfluous sentinel element from ctl_table array > raid: Remove now superfluous sentinel element from ctl_table array > hyper-v/azure: Remove now superfluous sentinel element from ctl_table array > intel drm: Remove now superfluous sentinel element from ctl_table array > > drivers/base/firmware_loader/fallback_table.c | 3 +- > drivers/cdrom/cdrom.c | 3 +- > drivers/char/hpet.c | 3 +- > drivers/char/ipmi/ipmi_poweroff.c | 3 +- > drivers/char/random.c | 3 +- > drivers/gpu/drm/i915/i915_perf.c | 3 +- > drivers/hv/hv_common.c | 3 +- > drivers/infiniband/core/iwcm.c | 3 +- > drivers/infiniband/core/ucma.c | 3 +- > drivers/macintosh/mac_hid.c | 3 +- > drivers/md/md.c | 3 +- > drivers/misc/sgi-xp/xpc_main.c | 6 ++-- > drivers/net/vrf.c | 3 +- > drivers/parport/procfs.c | 42 ++++++++++++--------------- > drivers/scsi/scsi_sysctl.c | 3 +- > drivers/scsi/sg.c | 3 +- > drivers/tty/tty_io.c | 3 +- > drivers/xen/balloon.c | 3 +- > 18 files changed, 36 insertions(+), 60 deletions(-) > --- > base-commit: 0e945134b680040b8613e962f586d91b6d40292d > change-id: 20230927-jag-sysctl_remove_empty_elem_drivers-f034962a0d8c > > Best regards,
On Thu, Sep 28, 2023 at 03:21:36PM +0200, Joel Granados via B4 Relay wrote: > From: Joel Granados <j.granados@samsung.com> > > This commit comes at the tail end of a greater effort to remove the > empty elements at the end of the ctl_table arrays (sentinels) which > will reduce the overall build time size of the kernel and run time > memory bloat by ~64 bytes per sentinel (further information Link : > https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/) > > Remove sentinel from xpc_sys_xpc_hb and xpc_sys_xpc > > Signed-off-by: Joel Granados <j.granados@samsung.com> > --- > drivers/misc/sgi-xp/xpc_main.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c > index 6da509d692bb..c898092ff3ac 100644 > --- a/drivers/misc/sgi-xp/xpc_main.c > +++ b/drivers/misc/sgi-xp/xpc_main.c > @@ -109,8 +109,7 @@ static struct ctl_table xpc_sys_xpc_hb[] = { > .mode = 0644, > .proc_handler = proc_dointvec_minmax, > .extra1 = &xpc_hb_check_min_interval, > - .extra2 = &xpc_hb_check_max_interval}, > - {} > + .extra2 = &xpc_hb_check_max_interval} > }; > static struct ctl_table xpc_sys_xpc[] = { > { > @@ -120,8 +119,7 @@ static struct ctl_table xpc_sys_xpc[] = { > .mode = 0644, > .proc_handler = proc_dointvec_minmax, > .extra1 = &xpc_disengage_min_timelimit, > - .extra2 = &xpc_disengage_max_timelimit}, > - {} > + .extra2 = &xpc_disengage_max_timelimit} > }; > > static struct ctl_table_header *xpc_sysctl; > > -- > 2.30.2 > I assume you'll match the rest of the changes with regards to the trailing comma. Reviewed-by: Steve Wahl <steve.wahl@hpe.com>
On Thu, Sep 28, 2023 at 12:51:15PM -0500, Steve Wahl wrote: > On Thu, Sep 28, 2023 at 03:21:36PM +0200, Joel Granados via B4 Relay wrote: > > From: Joel Granados <j.granados@samsung.com> > > > > This commit comes at the tail end of a greater effort to remove the > > empty elements at the end of the ctl_table arrays (sentinels) which > > will reduce the overall build time size of the kernel and run time > > memory bloat by ~64 bytes per sentinel (further information Link : > > https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/) > > > > Remove sentinel from xpc_sys_xpc_hb and xpc_sys_xpc > > > > Signed-off-by: Joel Granados <j.granados@samsung.com> > > --- > > drivers/misc/sgi-xp/xpc_main.c | 6 ++---- > > 1 file changed, 2 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/misc/sgi-xp/xpc_main.c b/drivers/misc/sgi-xp/xpc_main.c > > index 6da509d692bb..c898092ff3ac 100644 > > --- a/drivers/misc/sgi-xp/xpc_main.c > > +++ b/drivers/misc/sgi-xp/xpc_main.c > > @@ -109,8 +109,7 @@ static struct ctl_table xpc_sys_xpc_hb[] = { > > .mode = 0644, > > .proc_handler = proc_dointvec_minmax, > > .extra1 = &xpc_hb_check_min_interval, > > - .extra2 = &xpc_hb_check_max_interval}, > > - {} > > + .extra2 = &xpc_hb_check_max_interval} > > }; > > static struct ctl_table xpc_sys_xpc[] = { > > { > > @@ -120,8 +119,7 @@ static struct ctl_table xpc_sys_xpc[] = { > > .mode = 0644, > > .proc_handler = proc_dointvec_minmax, > > .extra1 = &xpc_disengage_min_timelimit, > > - .extra2 = &xpc_disengage_max_timelimit}, > > - {} > > + .extra2 = &xpc_disengage_max_timelimit} > > }; > > > > static struct ctl_table_header *xpc_sysctl; > > > > -- > > 2.30.2 > > > > I assume you'll match the rest of the changes with regards to the > trailing comma. If you are refering to Greg's comments. yes. I'll send a V2 with the trailing comma. Best > > Reviewed-by: Steve Wahl <steve.wahl@hpe.com> > > -- > Steve Wahl, Hewlett Packard Enterprise
On Thu, Sep 28, 2023 at 03:26:16PM +0000, Wei Liu wrote: > Please change the prefix to "Drivers: hv:" in the subject line in the > two patches. > > On Thu, Sep 28, 2023 at 03:21:39PM +0200, Joel Granados via B4 Relay wrote: > > From: Joel Granados <j.granados@samsung.com> > > > > This commit comes at the tail end of a greater effort to remove the > > empty elements at the end of the ctl_table arrays (sentinels) which > > will reduce the overall build time size of the kernel and run time > > memory bloat by ~64 bytes per sentinel (further information Link : > > https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/) > > > > Remove sentinel from hv_ctl_table > > > > Signed-off-by: Joel Granados <j.granados@samsung.com> > > --- > > drivers/hv/hv_common.c | 3 +-- > > 1 file changed, 1 insertion(+), 2 deletions(-) > > > > diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c > > index ccad7bca3fd3..bc7d678030aa 100644 > > --- a/drivers/hv/hv_common.c > > +++ b/drivers/hv/hv_common.c > > @@ -147,8 +147,7 @@ static struct ctl_table hv_ctl_table[] = { > > .proc_handler = proc_dointvec_minmax, > > .extra1 = SYSCTL_ZERO, > > .extra2 = SYSCTL_ONE > > - }, > > - {} > > + } > > Please keep the comma at the end. My V2 will have this. > > > }; > > > > static int hv_die_panic_notify_crash(struct notifier_block *self, > > > > -- > > 2.30.2 > >
On Thu, Sep 28, 2023 at 03:26:16PM +0000, Wei Liu wrote: > Please change the prefix to "Drivers: hv:" in the subject line in the > two patches. I'll change the commit message for the 14/15 patch from "hyper-v/azure" to "Drivers: hv:". But I only see one patch that needs this. Which is the other one? best > > On Thu, Sep 28, 2023 at 03:21:39PM +0200, Joel Granados via B4 Relay wrote: > > From: Joel Granados <j.granados@samsung.com> > > > > This commit comes at the tail end of a greater effort to remove the > > empty elements at the end of the ctl_table arrays (sentinels) which > > will reduce the overall build time size of the kernel and run time > > memory bloat by ~64 bytes per sentinel (further information Link : > > https://lore.kernel.org/all/ZO5Yx5JFogGi%2FcBo@bombadil.infradead.org/) > > > > Remove sentinel from hv_ctl_table > > > > Signed-off-by: Joel Granados <j.granados@samsung.com> > > --- > > drivers/hv/hv_common.c | 3 +-- > > 1 file changed, 1 insertion(+), 2 deletions(-) > > > > diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c > > index ccad7bca3fd3..bc7d678030aa 100644 > > --- a/drivers/hv/hv_common.c > > +++ b/drivers/hv/hv_common.c > > @@ -147,8 +147,7 @@ static struct ctl_table hv_ctl_table[] = { > > .proc_handler = proc_dointvec_minmax, > > .extra1 = SYSCTL_ZERO, > > .extra2 = SYSCTL_ONE > > - }, > > - {} > > + } > > Please keep the comma at the end. > > > }; > > > > static int hv_die_panic_notify_crash(struct notifier_block *self, > > > > -- > > 2.30.2 > >
Le 02/10/2023 à 10:47, Joel Granados a écrit : > On Thu, Sep 28, 2023 at 04:31:30PM +0000, Christophe Leroy wrote: > I followed this trace and proc_handler is correctly defined in tty_table > (struct ctl_table) in drivers/tty/tty_io.c:tty_init and there is not > path that changes these values. > Additionally, we then fail trying to print instead of continuing with > the initialization. My conjecture is that this might be due to something > different than tht sysctl register call. > > Does this happen consistenly or is this just a one off issue? Don't know. > > To what branch are these patches being applied to? As far as I understand from https://github.com/linuxppc/linux-snowpatch/commits/snowpatch/375319, it's being applied on https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id=d774975 > > I'm going to post my V2 and keep working on this issue if it pops up > again. > Christophe
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index c88854df0b62..e0073a627bac 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -976,6 +976,8 @@ static struct ctl_dir *new_dir(struct ctl_table_set *set, table[0].procname = new_name; table[0].mode = S_IFDIR|S_IRUGO|S_IXUGO; init_header(&new->header, set->dir.header.root, set, node, table, 1); + // Counts additional sentinel used for each new dir. + printk("%ld sysctl saved mem kzalloc \n", sizeof(struct ctl_table)); return new; } @@ -1199,6 +1201,9 @@ static struct ctl_table_header *new_links(struct ctl_dir *dir, struct ctl_table_ link_name += len; link++; } + // Counts additional sentinel used for each new registration + //if ((head->ctl_table + head->ctl_table_size)->procname) + printk("%ld sysctl saved mem kzalloc \n", sizeof(struct ctl_table)); init_header(links, dir->header.root, dir->header.set, node, link_table, head->ctl_table_size); links->nreg = nr_entries;