From: ebiederm@xmission.com (Eric W. Biederman) The binary interface for the cdrom sysctls can't possilby work. So remove the binary sysctls and reduce cdrom_sysctl_handler to it's essentials (to kill the uses of ctl_name). Since the last time this patch was posted I radically simplified cdrom_sysctl_helper to meet address Alan's objections. Signed-off-by: Eric W. Biederman Acked-by: Alan Cox Signed-off-by: Andrew Morton --- drivers/cdrom/cdrom.c | 35 +++++++---------------------------- 1 files changed, 7 insertions(+), 28 deletions(-) diff -puN drivers/cdrom/cdrom.c~sysctl-remove-broken-cdrom-binary-sysctls-update drivers/cdrom/cdrom.c --- a/drivers/cdrom/cdrom.c~sysctl-remove-broken-cdrom-binary-sysctls-update +++ a/drivers/cdrom/cdrom.c @@ -3454,40 +3454,19 @@ static void cdrom_update_settings(void) static int cdrom_sysctl_handler(ctl_table *ctl, int write, struct file * filp, void __user *buffer, size_t *lenp, loff_t *ppos) { - int *valp = ctl->data; - int val = *valp; int ret; ret = proc_dointvec(ctl, write, filp, buffer, lenp, ppos); - if (write && *valp != val) { + if (write) { /* we only care for 1 or 0. */ - if (*valp) - *valp = 1; - else - *valp = 0; - - if (strcmp(ctl->procname, "autoclose") == 0) { - if (valp == &cdrom_sysctl_settings.autoclose) - autoclose = cdrom_sysctl_settings.autoclose; - } - else if (strcmp(ctl->procname, "autoeject") == 0) { - if (valp == &cdrom_sysctl_settings.autoeject) - autoeject = cdrom_sysctl_settings.autoeject; - } - else if (strcmp(ctl->procname, "debug") == 0) { - if (valp == &cdrom_sysctl_settings.debug) - debug = cdrom_sysctl_settings.debug; - } - else if (strcmp(ctl->procname, "lock") == 0) { - if (valp == &cdrom_sysctl_settings.lock) - lockdoor = cdrom_sysctl_settings.lock; - } - else if (strcmp(ctl->procname, "check_media") == 0) { - if (valp == &cdrom_sysctl_settings.check) - check_media_type = cdrom_sysctl_settings.check; - } + autoclose = !!cdrom_sysctl_settings.autoclose; + autoeject = !!cdrom_sysctl_settings.autoeject; + debug = !!cdrom_sysctl_settings.debug; + lockdoor = !!cdrom_sysctl_settings.lock; + check_media_type = !!cdrom_sysctl_settings.check; + /* update the option flags according to the changes. we don't have per device options through sysctl yet, but we will have and then this will disappear. */ _