Sasha Levin <levinsasha928@xxxxxxxxx> writes: > Provide a callback that will be called when writing to a ctl_table > entry after the user input has been validated. > > This will simplify user input checks since now it will be possible to > remove them out of the proc_handler. Ick No. You are simplifying things by taking updates out of locks, and introducing races. Your naming of the callback "callback" is much too generic. I think the current function call mechanism of sysctl can be improved but I don't think you have come up with the right combination of things. Eric > Signed-off-by: Sasha Levin <levinsasha928@xxxxxxxxx> > --- > fs/proc/proc_sysctl.c | 4 ++++ > include/linux/sysctl.h | 1 + > 2 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c > index 21d836f..190db28 100644 > --- a/fs/proc/proc_sysctl.c > +++ b/fs/proc/proc_sysctl.c > @@ -507,6 +507,10 @@ static ssize_t proc_sys_call_handler(struct file *filp, void __user *buf, > error = table->proc_handler(table, write, buf, &res, ppos); > if (!error) > error = res; > + > + if (!error && write && table->callback) > + error = table->callback(); > + > out: > sysctl_head_finish(head); > > diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h > index c34b4c8..27c14cf 100644 > --- a/include/linux/sysctl.h > +++ b/include/linux/sysctl.h > @@ -1022,6 +1022,7 @@ struct ctl_table > struct ctl_table_poll *poll; > void *extra1; > void *extra2; > + int (*callback)(void); /* Called when entry is written to */ > }; > > struct ctl_node { -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html