diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index effb7e768165..84e7d6429e36 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c @@ -1666,6 +1666,24 @@ static void unregister_sg_sysctls(void) #define unregister_sg_sysctls() do { } while (0) #endif /* CONFIG_SYSCTL */ +static int scatter_elem_sz_set(const char *val, const struct kernel_param *kp){ + int n=0, ret; + + ret = kstrtoint(val, 10, &n); + if(ret !=0 || n <= 0 || n > (1024 * 4096)) + return -EINVAL; + + return param_set_int(val, kp); +} + +static const struct kernel_param_ops param_ops = { + .set = scatter_elem_sz_set, + .get = param_get_int, +}; + +static int num; +module_param_cb(scatter_elem_sz, ¶m_ops, &num, 0664); + static int __init init_sg(void) {