const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file *m = file->private_data;
- struct ptlrpc_service *svc = m->private;
- int bufpages;
- int val;
- int rc;
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+ int bufpages;
+ __s64 val;
+ int rc;
- rc = lprocfs_write_helper(buffer, count, &val);
- if (rc < 0)
- return rc;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc < 0)
+ return rc;
- if (val < 0)
- return -ERANGE;
+ if (val < 0 || val > INT_MAX)
+ return -ERANGE;
- /* This sanity check is more of an insanity check; we can still
- * hose a kernel by allowing the request history to grow too
- * far. */
+ /* This sanity check is more of an insanity check; we can still
+ * hose a kernel by allowing the request history to grow too
+ * far. */
bufpages = (svc->srv_buf_size + PAGE_CACHE_SIZE - 1) >>
PAGE_CACHE_SHIFT;
if (val > totalram_pages/(2 * bufpages))
- return -ERANGE;
+ return -ERANGE;
spin_lock(&svc->srv_lock);
if (val == 0)
svc->srv_hist_nrqbds_cpt_max = 0;
else
- svc->srv_hist_nrqbds_cpt_max = max(1, (val / svc->srv_ncpts));
+ svc->srv_hist_nrqbds_cpt_max =
+ max(1, ((int)val / svc->srv_ncpts));
spin_unlock(&svc->srv_lock);
const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file *m = file->private_data;
- struct ptlrpc_service *svc = m->private;
- int val;
- int rc = lprocfs_write_helper(buffer, count, &val);
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+ __s64 val;
+ int rc = lprocfs_str_to_s64(buffer, count, &val);
if (rc < 0)
return rc;
return -ERANGE;
}
- svc->srv_nthrs_cpt_init = val / svc->srv_ncpts;
+ svc->srv_nthrs_cpt_init = (int)val / svc->srv_ncpts;
spin_unlock(&svc->srv_lock);
const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file *m = file->private_data;
- struct ptlrpc_service *svc = m->private;
- int val;
- int rc = lprocfs_write_helper(buffer, count, &val);
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+ __s64 val;
+ int rc = lprocfs_str_to_s64(buffer, count, &val);
if (rc < 0)
return rc;
return -ERANGE;
}
- svc->srv_nthrs_cpt_limit = val / svc->srv_ncpts;
+ svc->srv_nthrs_cpt_limit = (int)val / svc->srv_ncpts;
spin_unlock(&svc->srv_lock);
ptlrpc_lprocfs_hp_ratio_seq_write(struct file *file, const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file *m = file->private_data;
- struct ptlrpc_service *svc = m->private;
- int rc;
- int val;
+ struct seq_file *m = file->private_data;
+ struct ptlrpc_service *svc = m->private;
+ int rc;
+ __s64 val;
- rc = lprocfs_write_helper(buffer, count, &val);
+ rc = lprocfs_str_to_s64(buffer, count, &val);
if (rc < 0)
return rc;
- if (val < 0)
+ if (val < 0 || val > INT_MAX)
return -ERANGE;
spin_lock(&svc->srv_lock);
lprocfs_pinger_recov_seq_write(struct file *file, const char __user *buffer,
size_t count, loff_t *off)
{
- struct seq_file *m = file->private_data;
- struct obd_device *obd = m->private;
- struct client_obd *cli = &obd->u.cli;
- struct obd_import *imp = cli->cl_import;
- int rc, val;
+ struct seq_file *m = file->private_data;
+ struct obd_device *obd = m->private;
+ struct client_obd *cli = &obd->u.cli;
+ struct obd_import *imp = cli->cl_import;
+ int rc;
+ __s64 val;
- rc = lprocfs_write_helper(buffer, count, &val);
+ rc = lprocfs_str_to_s64(buffer, count, &val);
if (rc < 0)
return rc;