From: Joel Granados <j.granados@samsung.com>
To: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Luis Chamberlain <mcgrof@kernel.org>,
"willy@infradead.org" <willy@infradead.org>,
"josh@joshtriplett.org" <josh@joshtriplett.org>,
Kees Cook <keescook@chromium.org>,
Phillip Potter <phil@philpotter.co.uk>,
Clemens Ladisch <clemens@ladisch.de>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Juergen Gross <jgross@suse.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
Jiri Slaby <jirislaby@kernel.org>,
"James E.J. Bottomley" <jejb@linux.ibm.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Doug Gilbert <dgilbert@interlog.com>,
Sudip Mukherjee <sudipm.mukherjee@gmail.com>,
Jason Gunthorpe <jgg@ziepe.ca>, Leon Romanovsky <leon@kernel.org>,
Corey Minyard <minyard@acm.org>, Theodore Ts'o <tytso@mit.edu>,
"Jason A. Donenfeld" <Jason@zx2c4.com>,
David Ahern <dsahern@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Robin Holt <robinmholt@gmail.com>,
Steve Wahl <steve.wahl@hpe.com>,
Russ Weight <russell.h.weight@intel.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Song Liu <song@kernel.org>,
"K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
Jani Nikula <jani.nikula@linux.intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
"linux-rdma@vger.kernel.org" <linux-rdma@vger.kernel.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>,
"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
"openipmi-developer@lists.sourceforge.net"
<openipmi-developer@lists.sourceforge.net>,
"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH v2 00/15] sysctl: Remove sentinel elements from drivers
Date: Tue, 3 Oct 2023 10:47:49 +0200 [thread overview]
Message-ID: <20231003084749.4xxi4z64hgq5a5lw@localhost> (raw)
In-Reply-To: <64fd22df-616e-9f5a-26fb-44c4b3423b0c@csgroup.eu>
[-- Attachment #1: Type: text/plain, Size: 12148 bytes --]
On Mon, Oct 02, 2023 at 12:27:18PM +0000, Christophe Leroy wrote:
>
>
> Le 02/10/2023 à 10:55, Joel Granados via B4 Relay a écrit :
> > From: Joel Granados <j.granados@samsung.com>
> >
<--- snip --->
> > - 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].
> >
> > ---
> > Changes in v2:
> > - Left the dangling comma in the ctl_table arrays.
> > - Link to v1: https://lore.kernel.org/r/20230928-jag-sysctl_remove_empty_elem_drivers-v1-0-e59120fca9f9@samsung.com
> >
> > Comments/feedback greatly appreciated
>
> Same problem on powerpc CI tests, all boot target failed, most of them
> with similar OOPS, see
> https://patchwork.ozlabs.org/project/linuxppc-dev/patch/20231002-jag-sysctl_remove_empty_elem_drivers-v2-15-02dd0d46f71e@samsung.com/
I found the culprit!. Here you are rebasing on top of v6.5.0-rc6 "INFO:
Looking for kernel version: 6.5.0-rc6-gbf2ac4d7d596". The error makes
sense becuase in that version we have not introduced the stopping
criteria based on the ctl_table array size, so the loop continues
looking for an empty sentinel past valid memory (and does not find it).
The ctl_table check catches it but then fails to do a proper error
because we have already tried to access invalid memory. The solution
here is to make sure to rebase in on top of the latest rc in v6.6.
>
> What is strange is that I pushed your series into my github account, and
> got no failure, see https://github.com/chleroy/linux/actions/runs/6378951278
And here it works because you use the latest rc : "INFO: Looking for
kernel version: 6.6.0-rc3-g23d4b5db743c"
>
> Christophe
>
> >
> > 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>
> >
> > To: Luis Chamberlain <mcgrof@kernel.org>
> > To: willy@infradead.org
> > To: josh@joshtriplett.org
> > To: Kees Cook <keescook@chromium.org>
> > To: Phillip Potter <phil@philpotter.co.uk>
> > To: Clemens Ladisch <clemens@ladisch.de>
> > To: Arnd Bergmann <arnd@arndb.de>
> > To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > To: Juergen Gross <jgross@suse.com>
> > To: Stefano Stabellini <sstabellini@kernel.org>
> > To: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> > To: Jiri Slaby <jirislaby@kernel.org>
> > To: "James E.J. Bottomley" <jejb@linux.ibm.com>
> > To: "Martin K. Petersen" <martin.petersen@oracle.com>
> > To: Doug Gilbert <dgilbert@interlog.com>
> > To: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
> > To: Jason Gunthorpe <jgg@ziepe.ca>
> > To: Leon Romanovsky <leon@kernel.org>
> > To: Corey Minyard <minyard@acm.org>
> > To: Theodore Ts'o <tytso@mit.edu>
> > To: "Jason A. Donenfeld" <Jason@zx2c4.com>
> > To: David Ahern <dsahern@kernel.org>
> > To: "David S. Miller" <davem@davemloft.net>
> > To: Eric Dumazet <edumazet@google.com>
> > To: Jakub Kicinski <kuba@kernel.org>
> > To: Paolo Abeni <pabeni@redhat.com>
> > To: Robin Holt <robinmholt@gmail.com>
> > To: Steve Wahl <steve.wahl@hpe.com>
> > To: Russ Weight <russell.h.weight@intel.com>
> > To: "Rafael J. Wysocki" <rafael@kernel.org>
> > To: Song Liu <song@kernel.org>
> > To: "K. Y. Srinivasan" <kys@microsoft.com>
> > To: Haiyang Zhang <haiyangz@microsoft.com>
> > To: Wei Liu <wei.liu@kernel.org>
> > To: Dexuan Cui <decui@microsoft.com>
> > To: Jani Nikula <jani.nikula@linux.intel.com>
> > To: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> > To: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > To: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> > To: David Airlie <airlied@gmail.com>
> > To: Daniel Vetter <daniel@ffwll.ch>
> > Cc: linux-kernel@vger.kernel.org
> > Cc: xen-devel@lists.xenproject.org
> > Cc: linux-serial@vger.kernel.org
> > Cc: linux-scsi@vger.kernel.org
> > Cc: linuxppc-dev@lists.ozlabs.org
> > Cc: linux-rdma@vger.kernel.org
> > Cc: openipmi-developer@lists.sourceforge.net
> > Cc: netdev@vger.kernel.org
> > Cc: linux-raid@vger.kernel.org
> > Cc: linux-hyperv@vger.kernel.org
> > Cc: intel-gfx@lists.freedesktop.org
> > Cc: dri-devel@lists.freedesktop.org
> >
> > ---
> >
> > ---
> > 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
> > Drivers: hv: 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 | 1 -
> > drivers/cdrom/cdrom.c | 1 -
> > drivers/char/hpet.c | 1 -
> > drivers/char/ipmi/ipmi_poweroff.c | 1 -
> > drivers/char/random.c | 1 -
> > drivers/gpu/drm/i915/i915_perf.c | 1 -
> > drivers/hv/hv_common.c | 1 -
> > drivers/infiniband/core/iwcm.c | 1 -
> > drivers/infiniband/core/ucma.c | 1 -
> > drivers/macintosh/mac_hid.c | 1 -
> > drivers/md/md.c | 1 -
> > drivers/misc/sgi-xp/xpc_main.c | 2 --
> > drivers/net/vrf.c | 1 -
> > drivers/parport/procfs.c | 28 +++++++++++----------------
> > drivers/scsi/scsi_sysctl.c | 1 -
> > drivers/scsi/sg.c | 1 -
> > drivers/tty/tty_io.c | 1 -
> > drivers/xen/balloon.c | 1 -
> > 18 files changed, 11 insertions(+), 35 deletions(-)
> > ---
> > base-commit: 0e945134b680040b8613e962f586d91b6d40292d
> > change-id: 20230927-jag-sysctl_remove_empty_elem_drivers-f034962a0d8c
> >
> > Best regards,
--
Joel Granados
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
next prev parent reply other threads:[~2023-10-03 8:45 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-02 8:55 [PATCH v2 00/15] sysctl: Remove sentinel elements from drivers Joel Granados via B4 Relay
2023-10-02 8:55 ` [PATCH v2 01/15] cdrom: Remove now superfluous sentinel element from ctl_table array Joel Granados via B4 Relay
2023-10-02 21:45 ` Phillip Potter
2023-10-02 8:55 ` [PATCH v2 02/15] hpet: " Joel Granados via B4 Relay
2023-10-02 8:55 ` [PATCH v2 03/15] xen: " Joel Granados via B4 Relay
2023-10-02 8:55 ` [PATCH v2 04/15] tty: " Joel Granados via B4 Relay
2023-10-02 8:58 ` Jiri Slaby
2023-10-02 8:55 ` [PATCH v2 05/15] scsi: " Joel Granados via B4 Relay
2023-10-02 8:55 ` [PATCH v2 06/15] parport: Remove the " Joel Granados via B4 Relay
2023-10-02 8:55 ` [PATCH v2 07/15] macintosh: " Joel Granados via B4 Relay
2023-10-02 8:55 ` [PATCH v2 08/15] infiniband: " Joel Granados via B4 Relay
2023-10-02 8:55 ` [PATCH v2 09/15] char-misc: " Joel Granados via B4 Relay
2023-10-02 12:27 ` [PATCH v2 00/15] sysctl: Remove sentinel elements from drivers Christophe Leroy
2023-10-03 8:47 ` Joel Granados [this message]
[not found] ` <651a84ff.050a0220.51ca9.2e91SMTPIN_ADDED_BROKEN@mx.google.com>
2023-10-02 14:17 ` [PATCH v2 10/15] vrf: Remove the now superfluous sentinel element from ctl_table array David Ahern
[not found] ` <=?utf-8?q?=3C20231002-jag-sysctl=5Fremove=5Fempty=5Felem=5Fdrive?=>
2023-10-02 14:33 ` [PATCH v2 11/15] sgi-xp: " Steve Wahl
2023-10-10 22:26 ` [PATCH v2 00/15] sysctl: Remove sentinel elements from drivers Luis Chamberlain
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=20231003084749.4xxi4z64hgq5a5lw@localhost \
--to=j.granados@samsung.com \
--cc=Jason@zx2c4.com \
--cc=airlied@gmail.com \
--cc=arnd@arndb.de \
--cc=christophe.leroy@csgroup.eu \
--cc=clemens@ladisch.de \
--cc=daniel@ffwll.ch \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=dgilbert@interlog.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=haiyangz@microsoft.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jejb@linux.ibm.com \
--cc=jgg@ziepe.ca \
--cc=jgross@suse.com \
--cc=jirislaby@kernel.org \
--cc=joonas.lahtinen@linux.intel.com \
--cc=josh@joshtriplett.org \
--cc=keescook@chromium.org \
--cc=kuba@kernel.org \
--cc=kys@microsoft.com \
--cc=leon@kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=martin.petersen@oracle.com \
--cc=mcgrof@kernel.org \
--cc=minyard@acm.org \
--cc=netdev@vger.kernel.org \
--cc=oleksandr_tyshchenko@epam.com \
--cc=openipmi-developer@lists.sourceforge.net \
--cc=pabeni@redhat.com \
--cc=phil@philpotter.co.uk \
--cc=rafael@kernel.org \
--cc=robinmholt@gmail.com \
--cc=rodrigo.vivi@intel.com \
--cc=russell.h.weight@intel.com \
--cc=song@kernel.org \
--cc=sstabellini@kernel.org \
--cc=steve.wahl@hpe.com \
--cc=sudipm.mukherjee@gmail.com \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=tytso@mit.edu \
--cc=wei.liu@kernel.org \
--cc=willy@infradead.org \
--cc=xen-devel@lists.xenproject.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).