Skip to content

Commit 78a7b5d

Browse files
Joelgranadosdavem330
authored andcommitted
ax.25: x.25: Remove the now superfluous sentinel elements from ctl_table array
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/) Avoid a buffer overflow when traversing the ctl_table by ensuring that AX25_MAX_VALUES is the same as the size of ax25_param_table. This is done with a BUILD_BUG_ON where ax25_param_table is defined and a CONFIG_AX25_DAMA_SLAVE guard in the unnamed enum definition as well as in the ax25_dev_device_up and ax25_ds_set_timer functions. The overflow happened when the sentinel was removed from ax25_param_table. The sentinel's data element was changed when CONFIG_AX25_DAMA_SLAVE was undefined. This had no adverse effects as it still stopped on the sentinel's null procname but needed to be addressed once the sentinel was removed. Signed-off-by: Joel Granados <j.granados@samsung.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent e00e35e commit 78a7b5d

5 files changed

Lines changed: 7 additions & 3 deletions

File tree

include/net/ax25.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,9 @@ enum {
139139
AX25_VALUES_N2, /* Default N2 value */
140140
AX25_VALUES_PACLEN, /* AX.25 MTU */
141141
AX25_VALUES_PROTOCOL, /* Std AX.25, DAMA Slave, DAMA Master */
142+
#ifdef CONFIG_AX25_DAMA_SLAVE
142143
AX25_VALUES_DS_TIMEOUT, /* DAMA Slave timeout */
144+
#endif
143145
AX25_MAX_VALUES /* THIS MUST REMAIN THE LAST ENTRY OF THIS LIST */
144146
};
145147

net/ax25/ax25_dev.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,10 @@ void ax25_dev_device_up(struct net_device *dev)
7878
ax25_dev->values[AX25_VALUES_N2] = AX25_DEF_N2;
7979
ax25_dev->values[AX25_VALUES_PACLEN] = AX25_DEF_PACLEN;
8080
ax25_dev->values[AX25_VALUES_PROTOCOL] = AX25_DEF_PROTOCOL;
81+
82+
#ifdef CONFIG_AX25_DAMA_SLAVE
8183
ax25_dev->values[AX25_VALUES_DS_TIMEOUT]= AX25_DEF_DS_TIMEOUT;
84+
#endif
8285

8386
#if defined(CONFIG_AX25_DAMA_SLAVE) || defined(CONFIG_AX25_DAMA_MASTER)
8487
ax25_ds_setup_timer(ax25_dev);

net/ax25/ax25_ds_timer.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ void ax25_ds_set_timer(ax25_dev *ax25_dev)
5555
ax25_dev->dama.slave_timeout =
5656
msecs_to_jiffies(ax25_dev->values[AX25_VALUES_DS_TIMEOUT]) / 10;
5757
mod_timer(&ax25_dev->dama.slave_timer, jiffies + HZ);
58+
return;
5859
}
5960

6061
/*

net/ax25/sysctl_net_ax25.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,6 @@ static const struct ctl_table ax25_param_table[] = {
141141
.extra2 = &max_ds_timeout
142142
},
143143
#endif
144-
145-
{ } /* that's all, folks! */
146144
};
147145

148146
int ax25_register_dev_sysctl(ax25_dev *ax25_dev)
@@ -155,6 +153,7 @@ int ax25_register_dev_sysctl(ax25_dev *ax25_dev)
155153
if (!table)
156154
return -ENOMEM;
157155

156+
BUILD_BUG_ON(ARRAY_SIZE(ax25_param_table) != AX25_MAX_VALUES);
158157
for (k = 0; k < AX25_MAX_VALUES; k++)
159158
table[k].data = &ax25_dev->values[k];
160159

net/x25/sysctl_net_x25.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ static struct ctl_table x25_table[] = {
7171
.mode = 0644,
7272
.proc_handler = proc_dointvec,
7373
},
74-
{ },
7574
};
7675

7776
int __init x25_register_sysctl(void)

0 commit comments

Comments
 (0)