return -ENODEV;
stats = &obd->u.obt.obt_jobstats;
- return seq_printf(m, "%d\n", stats->ojs_cleanup_interval);
+ seq_printf(m, "%d\n", stats->ojs_cleanup_interval);
+ return 0;
}
EXPORT_SYMBOL(lprocfs_job_interval_seq_show);
ssize_t
-lprocfs_job_interval_seq_write(struct file *file, const char *buffer,
+lprocfs_job_interval_seq_write(struct file *file, const char __user *buffer,
size_t count, loff_t *off)
{
struct obd_device *obd;
struct obd_job_stats *stats;
- int val, rc;
+ int rc;
+ __s64 val;
obd = ((struct seq_file *)file->private_data)->private;
if (obd == NULL)
stats = &obd->u.obt.obt_jobstats;
- rc = lprocfs_write_helper(buffer, count, &val);
+ rc = lprocfs_str_to_s64(buffer, count, &val);
if (rc)
return rc;
+ if (val < 0 || val > UINT_MAX)
+ return -ERANGE;
stats->ojs_cleanup_interval = val;
lprocfs_job_cleanup(stats, stats->ojs_cleanup_interval);