patch-2.4.0-test11 linux/net/ax25/sysctl_net_ax25.c
Next file: linux/net/bridge/br_fdb.c
Previous file: linux/net/atm/svc.c
Back to the patch index
Back to the overall index
- Lines: 56
- Date:
Sun Nov 12 20:37:17 2000
- Orig file:
v2.4.0-test10/linux/net/ax25/sysctl_net_ax25.c
- Orig date:
Fri Feb 20 18:28:23 1998
diff -u --recursive --new-file v2.4.0-test10/linux/net/ax25/sysctl_net_ax25.c linux/net/ax25/sysctl_net_ax25.c
@@ -114,15 +114,18 @@
memset(ax25_table, 0x00, ax25_table_size);
for (n = 0, ax25_dev = ax25_dev_list; ax25_dev != NULL; ax25_dev = ax25_dev->next) {
+ ctl_table *child = kmalloc(sizeof(ax25_param_table), GFP_ATOMIC);
+ if (!child) {
+ while (n--)
+ kfree(ax25_table[n].child);
+ kfree(ax25_table);
+ return;
+ }
+ memcpy(child, ax25_param_table, sizeof(ax25_param_table));
+ ax25_table[n].child = ax25_dev->systable = child;
ax25_table[n].ctl_name = n + 1;
ax25_table[n].procname = ax25_dev->dev->name;
- ax25_table[n].data = NULL;
- ax25_table[n].maxlen = 0;
ax25_table[n].mode = 0555;
- ax25_table[n].child = ax25_dev->systable;
- ax25_table[n].proc_handler = NULL;
-
- memcpy(ax25_dev->systable, ax25_param_table, sizeof(ax25_dev->systable));
#ifndef CONFIG_AX25_DAMA_SLAVE
/*
@@ -131,13 +134,13 @@
* AX.25 DAMA slave code, do we?
*/
- ax25_dev->systable[AX25_VALUES_DS_TIMEOUT].procname = NULL;
+ child[AX25_VALUES_DS_TIMEOUT].procname = NULL;
#endif
- ax25_dev->systable[AX25_MAX_VALUES].ctl_name = 0; /* just in case... */
+ child[AX25_MAX_VALUES].ctl_name = 0; /* just in case... */
for (k = 0; k < AX25_MAX_VALUES; k++)
- ax25_dev->systable[k].data = &ax25_dev->values[k];
+ child[k].data = &ax25_dev->values[k];
n++;
}
@@ -149,9 +152,11 @@
void ax25_unregister_sysctl(void)
{
+ ctl_table *p;
unregister_sysctl_table(ax25_table_header);
- kfree(ax25_table);
-
ax25_dir_table[0].child = NULL;
+ for (p = ax25_table; p->ctl_name; p++)
+ kfree(p->child);
+ kfree(ax25_table);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)