--- a/tn7dsl.c +++ b/tn7dsl.c @@ -209,7 +209,7 @@ led_reg_t ledreg[2]; static struct led_funcs ledreg[2]; #endif -#define DEV_DSLMOD CTL_UNNUMBERED +#define DEV_DSLMOD 0 #define MAX_STR_SIZE 256 #define DSL_MOD_SIZE 256 @@ -350,8 +350,8 @@ static void tn7dsl_chng_modulation(void* static unsigned int tn7dsl_set_modulation(void* data, int flag); static void tn7dsl_ctrl_fineGain(int value); static void tn7dsl_set_fineGainValue(int value); -static int dslmod_sysctl (ctl_table * ctl, int write, struct file *filp, - void *buffer, size_t * lenp); +static int dslmod_sysctl (ctl_table * ctl, int write, void *buffer, + size_t * lenp, loff_t *ppos); static void tn7dsl_register_dslss_led(void); void tn7dsl_dslmod_sysctl_register(void); void tn7dsl_dslmod_sysctl_unregister(void); @@ -3582,8 +3582,8 @@ unsigned int tn7dsl_get_memory(unsigned -static int dslmod_sysctl(ctl_table *ctl, int write, struct file * filp, - void *buffer, size_t *lenp) +static int dslmod_sysctl(ctl_table *ctl, int write, void *buffer, + size_t *lenp, loff_t *ppos) { char *ptr; int ret, len = 0; @@ -3595,7 +3595,7 @@ static int dslmod_sysctl(ctl_table *ctl, char mod_req[16] = { '\t' }; char fst_byt; - if (!*lenp || (filp->f_pos && !write)) + if (!*lenp || (*ppos && !write)) { *lenp = 0; return 0; @@ -3605,9 +3605,9 @@ static int dslmod_sysctl(ctl_table *ctl, */ if(write) { - ret = proc_dostring(ctl, write, filp, buffer, lenp, 0); + ret = proc_dostring(ctl, write, buffer, lenp, ppos); - switch (ctl->ctl_name) + switch ((long)ctl->extra2) { case DEV_DSLMOD: ptr = strpbrk(info, " \t"); @@ -3691,14 +3691,21 @@ static int dslmod_sysctl(ctl_table *ctl, else { len += sprintf(info+len, mod_req); - ret = proc_dostring(ctl, write, filp, buffer, lenp, 0); + ret = proc_dostring(ctl, write, buffer, lenp, ppos); } return ret; } ctl_table dslmod_table[] = { - {DEV_DSLMOD, "dslmod", info, DSL_MOD_SIZE, 0644, NULL, NULL, &dslmod_sysctl, &sysctl_string} + { + .procname = "dslmod", + .data = info, + .maxlen = DSL_MOD_SIZE, + .mode = 0644, + .proc_handler = &dslmod_sysctl, + .extra2 = (void *)DEV_DSLMOD, + } , {0} }; @@ -3706,7 +3713,12 @@ ctl_table dslmod_table[] = { /* Make sure that /proc/sys/dev is there */ ctl_table dslmod_root_table[] = { #ifdef CONFIG_PROC_FS - {CTL_DEV, "dev", NULL, 0, 0555, dslmod_table} + { + .procname = "dev", + .maxlen = 0, + .mode = 0555, + .child = dslmod_table, + } , #endif /* CONFIG_PROC_FS */ {0}