Re: [PATCH v2 4/4] ax.25: Remove the now superfluous sentinel elements from ctl_table array

Joel Granados <[email protected]>
Newsgroups org.kernel.vger.linux-x25,dev.linux.lists.bridge,dev.linux.lists.mptcp,org.kernel.vger.dccp,org.kernel.vger.linux-hams,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-rdma,org.kernel.vger.linux-s390,org.kernel.vger.linux-sctp,org.kernel.vger.linux-wpan,org.kernel.vger.lvs-devel,org.kernel.vger.netdev,org.kernel.vger.netfilter-devel
Message-ID <[email protected]>
On Wed, Apr 03, 2024 at 11:16:25AM +0200, Joel Granados wrote:
> On Thu, Mar 28, 2024 at 12:49:34PM -0700, Kuniyuki Iwashima wrote:
> > From: Joel Granados via B4 Relay <[email protected]>
> > Date: Thu, 28 Mar 2024 16:40:05 +0100
> > > 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%[email protected]/)
> > > 
> > > When we remove the sentinel from ax25_param_table a buffer overflow
> > > shows its ugly head. The sentinel's data element used to be changed when
> > > CONFIG_AX25_DAMA_SLAVE was not defined.
> > 
> > I think it's better to define the relation explicitly between the
> > enum and sysctl table by BUILD_BUG_ON() in ax25_register_dev_sysctl()
> > 
> >   BUILD_BUG_ON(AX25_MAX_VALUES != ARRAY_SIZE(ax25_param_table));
> > 
> > and guard AX25_VALUES_DS_TIMEOUT with #ifdef CONFIG_AX25_DAMA_SLAVE
> > as done for other enum.
> This is a great idea. I'll also try to look and see where else I can add
> the explicit relation check.
> 
> Thx for the review
> 
> > 
> > 
> > > This did not have any adverse
> > > effects as we still stopped on the sentinel because of its null
> > > procname. But now that we do not have the sentinel element, we are
> > > careful to check ax25_param_table's size.
> > > 
> > > Signed-off-by: Joel Granados <[email protected]>
> > > ---
> > >  net/ax25/sysctl_net_ax25.c | 4 +---
> > >  1 file changed, 1 insertion(+), 3 deletions(-)
> > > 
> > > diff --git a/net/ax25/sysctl_net_ax25.c b/net/ax25/sysctl_net_ax25.c
> > > index db66e11e7fe8..e55be8817a1e 100644
> > > --- a/net/ax25/sysctl_net_ax25.c
> > > +++ b/net/ax25/sysctl_net_ax25.c
> > > @@ -141,8 +141,6 @@ static const struct ctl_table ax25_param_table[] = {
> > >  		.extra2		= &max_ds_timeout
> > >  	},
> > >  #endif
> > > -
> > > -	{ }	/* that's all, folks! */
> > >  };
> > >  
> > >  int ax25_register_dev_sysctl(ax25_dev *ax25_dev)
> > > @@ -155,7 +153,7 @@ int ax25_register_dev_sysctl(ax25_dev *ax25_dev)
> > >  	if (!table)
> > >  		return -ENOMEM;
> > >  
> > > -	for (k = 0; k < AX25_MAX_VALUES; k++)
> > > +	for (k = 0; k < AX25_MAX_VALUES && k < ARRAY_SIZE(ax25_param_table); k++)
And with the BUILD_BUG_ON we don't need to do the `k <
ARRAY_SIZE(ax25_param_table)` any longer. Win/win :)

> > >  		table[k].data = &ax25_dev->values[k];
> > >  
> > >  	snprintf(path, sizeof(path), "net/ax25/%s", ax25_dev->dev->name);
> > > 
> > > -- 
> > > 2.43.0
> 
> -- 
> 
> Joel Granados



-- 

Joel Granados
signature.asc (application/pgp-signature, 659 B)
-----BEGIN PGP SIGNATURE-----

iQGzBAABCgAdFiEErkcJVyXmMSXOyyeQupfNUreWQU8FAmYNNoEACgkQupfNUreW
QU/2xwv+MItPQYrz+S6dRg4Ai/4AcELCorzBdY4bODL7PVt21oRNRzkdPrq6w6ju
ZFVkQH/WIICFHeGJ9RJGwF/e3xOzwTpg3GK0xE0s3YT4eO2R/dzV7LyIGklp7WT2
bsnrm2zhkiKp7OZHIhHUze9HniHLvoBiJPVAMMe3YXMkEtrjxfqLOVNnyKxuHjdD
1QuYwZvFvCXZt/1y0B/vvCeaq+hlNidK29TRRU0Bmqb4jE9WYTYtBkwxLDPw9mNo
kZ3nbaxct86hWGyWHXS9mYjySkRbS2JqHXYoDV+u0S51ufVgo7crYSL9E93t0hu2
O6wCfXcUw2vcypp/jivDaSw5x9ULQWg4ITiWl3wxxsaRjoUwVl7IfOk1nQYwOsCE
K138v1DytuqhzXRyLYYf6yEfug89HG762oB0V3UAxqx6uYQlpc99DhP2ejynYco2
Ae8GVoKvakSl5NpefEu2btStO3NdM9rueEYF77z5oIYhbkC0YnkyJZz6zDtMQY/M
7yoIH3I9
=Ju+L
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.