All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Thomas Weißschuh" <linux@weissschuh.net>
To: Joel Granados <j.granados@samsung.com>
Cc: Luis Chamberlain <mcgrof@kernel.org>,
	 Dan Carpenter <dan.carpenter@linaro.org>,
	Julia Lawall <julia.lawall@inria.fr>,
	 Kees Cook <keescook@chromium.org>,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>,
	 Iurii Zaikin <yzaikin@google.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH v2 00/18] sysctl: constify sysctl ctl_tables
Date: Sun, 17 Dec 2023 23:10:15 +0100	[thread overview]
Message-ID: <908dc370-7cf6-4b2b-b7c9-066779bc48eb@t-8ch.de> (raw)
In-Reply-To: <20231217120201.z4gr3ksjd4ai2nlk@localhost>

On 2023-12-17 13:02:01+0100, Joel Granados wrote:
> Catching up with mail....
> 
> On Tue, Dec 12, 2023 at 11:51:30PM -0800, Luis Chamberlain wrote:
> > On Tue, Dec 12, 2023 at 10:09:30AM +0100, Joel Granados wrote:
> > > My idea was to do something similar to your originl RFC, where you have
> > > an temporary proc_handler something like proc_hdlr_const (we would need
> > > to work on the name) and move each subsystem to the new handler while
> > > the others stay with the non-const one. At the end, the old proc_handler
> > > function name would disapear and would be completely replaced by the new
> > > proc_hdlr_const.
> > >
> > > This is of course extra work and might not be worth it if you don't get
> > > negative feedback related to tree-wide changes. Therefore I stick to my
> > > previous suggestion. Send the big tree-wide patches and only explore
> > > this option if someone screams.
> >
> > I think we can do better, can't we just increase confidence in that we
> > don't *need* muttable ctl_cables with something like smatch or
> > coccinelle so that we can just make them const?
> >
> > Seems like a noble endeavor for us to generalize.
> >
> > Then we just breeze through by first fixing those that *are* using
> > mutable tables by having it just de-register and then re-register
> So let me see if I understand your {de,re}-register idea:
> When we have a situation (like in the networking code) where a ctl_table
> is being used in an unmuttable way, we do your {de,re}-register trick.

unmuttable?

> The trick consists in unregistering an old ctl_table and reregistering
> with a whole new const changed table. In this way, whatever we register
> is always const.
> 
> Once we address all the places where this happens, then we just change
> the handler to const and we are done.
> 
> Is that correct?

I'm confused.

The handlers can already be made const as shown in this series, which
does convert the whole kernel tree.
There is only one handler (the stackleak one) which modifies the table
and this one is fixed as part of the series.

(Plus the changes needed to the sysctl core to avoid mutation there)

> If that is indeed what you are proposing, you might not even need the
> un-register step as all the mutability that I have seen occurs before
> the register. So maybe instead of re-registering it, you can so a copy
> (of the changed ctl_table) to a const pointer and then pass that along
> to the register function.

Tables that are modified, but *not* through the handler, would crop
during the constification of the table structs.
Which should be a second step.

But Luis' message was not completely clear to me.
I guess I'm missing something.

> Can't think of anything else off the top of my head. Would have to
> actually see the code to evaluate further I think.
> 
> > new tables if they need to be changed, and then a new series is sent
> > once we fix all those muttable tables.

Thomas

  reply	other threads:[~2023-12-17 22:10 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20231204075237eucas1p27966f7e7da014b5992d3eef89a8fde25@eucas1p2.samsung.com>
2023-12-04  7:52 ` [PATCH v2 00/18] sysctl: constify sysctl ctl_tables Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 01/18] watchdog/core: remove sysctl handlers from public header Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 02/18] sysctl: delete unused define SYSCTL_PERM_EMPTY_DIR Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 03/18] sysctl: drop sysctl_is_perm_empty_ctl_table Thomas Weißschuh
2023-12-07 14:09     ` Joel Granados
2023-12-04  7:52   ` [PATCH v2 04/18] cgroup: bpf: constify ctl_table arguments and fields Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 05/18] seccomp: constify ctl_table arguments of utility functions Thomas Weißschuh
2023-12-04 22:12     ` Kees Cook
2023-12-04  7:52   ` [PATCH v2 06/18] hugetlb: " Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 07/18] utsname: constify ctl_table arguments of utility function Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 08/18] stackleak: don't modify ctl_table argument Thomas Weißschuh
2023-12-04 22:14     ` Kees Cook
2023-12-04  7:52   ` [PATCH v2 09/18] sysctl: treewide: constify ctl_table_root::set_ownership Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 10/18] sysctl: treewide: constify ctl_table_root::permissions Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 11/18] sysctl: treewide: constify ctl_table_header::ctl_table_arg Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 12/18] sysctl: treewide: constify the ctl_table argument of handlers Thomas Weißschuh
2023-12-04 22:17     ` Kees Cook
2023-12-05  9:50     ` kernel test robot
2023-12-05 16:05     ` kernel test robot
2023-12-04  7:52   ` [PATCH v2 13/18] sysctl: move sysctl type to ctl_table_header Thomas Weißschuh
2023-12-05 22:33     ` Luis Chamberlain
2023-12-05 22:41       ` Thomas Weißschuh
2023-12-05 22:50         ` Luis Chamberlain
2023-12-06  5:53           ` Thomas Weißschuh
2023-12-07 12:14             ` Joel Granados
2023-12-07 19:29               ` Thomas Weißschuh
2023-12-21 12:09             ` Joel Granados
2023-12-23 13:04               ` Thomas Weißschuh
2023-12-24 18:51                 ` Joel Granados
2023-12-07 12:05           ` Joel Granados
2023-12-07 11:31     ` Joel Granados
2023-12-04  7:52   ` [PATCH v2 14/18] sysctl: move internal interfaces to const struct ctl_table Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 15/18] sysctl: allow registration of " Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 16/18] const_structs.checkpatch: add ctl_table Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 17/18] sysctl: make ctl_table sysctl_mount_point const Thomas Weißschuh
2023-12-04  7:52   ` [PATCH v2 18/18] sysctl: constify standard sysctl tables Thomas Weißschuh
2023-12-05  5:50   ` [PATCH v2 00/18] sysctl: constify sysctl ctl_tables Luis Chamberlain
2023-12-05  8:04     ` Thomas Weißschuh
2023-12-05 17:16       ` Thomas Weißschuh
2023-12-05 22:27         ` Luis Chamberlain
2023-12-07 11:23           ` Joel Granados
2023-12-07 11:19         ` Joel Granados
2023-12-07 19:23           ` Thomas Weißschuh
2023-12-07 11:05       ` Joel Granados
2023-12-07 10:43   ` Joel Granados
2023-12-07 19:19     ` Thomas Weißschuh
2023-12-08  9:59       ` Joel Granados
2023-12-11 11:25         ` Thomas Weißschuh
2023-12-12  9:09           ` Joel Granados
2023-12-13  7:51             ` Luis Chamberlain
2023-12-15 16:40               ` Thomas Weißschuh
2023-12-15 17:05                 ` Julia Lawall
2023-12-17 12:02               ` Joel Granados
2023-12-17 22:10                 ` Thomas Weißschuh [this message]
2023-12-18 21:21                   ` Luis Chamberlain
2023-12-19 19:29                     ` Thomas Weißschuh
2023-12-19 20:39                       ` Julia Lawall
2023-12-19 21:09                       ` Luis Chamberlain
2023-12-19 21:21                         ` Julia Lawall
2023-12-20  0:09                           ` Luis Chamberlain
2023-12-20  7:39                             ` Julia Lawall
2023-12-20 14:34                               ` Luis Chamberlain
2023-12-19 23:04                         ` Julia Lawall
2023-12-21 12:44                       ` Joel Granados
     [not found]                     ` <CGME20231223120907eucas1p20afac63076e1e9d5aee6adaa101c0630@eucas1p2.samsung.com>
2023-12-21 12:36                       ` Joel Granados
2023-12-21 12:12                   ` Joel Granados
2023-12-13  7:47           ` Luis Chamberlain
2023-12-13 18:18             ` Eric W. Biederman

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=908dc370-7cf6-4b2b-b7c9-066779bc48eb@t-8ch.de \
    --to=linux@weissschuh.net \
    --cc=dan.carpenter@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavoars@kernel.org \
    --cc=j.granados@samsung.com \
    --cc=julia.lawall@inria.fr \
    --cc=keescook@chromium.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    --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.