summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/bnxt_re/debugfs.c31
1 files changed, 7 insertions, 24 deletions
diff --git a/drivers/infiniband/hw/bnxt_re/debugfs.c b/drivers/infiniband/hw/bnxt_re/debugfs.c
index 143e9bfc6b79..efcfec8ec25c 100644
--- a/drivers/infiniband/hw/bnxt_re/debugfs.c
+++ b/drivers/infiniband/hw/bnxt_re/debugfs.c
@@ -308,21 +308,12 @@ static ssize_t bnxt_re_cc_config_set(struct file *filp, const char __user *buffe
struct bnxt_re_dev *rdev = dbg_cc_param->rdev;
u32 offset = dbg_cc_param->offset;
u8 cc_gen = dbg_cc_param->cc_gen;
- char buf[16];
u32 val;
int rc;
- if (count >= sizeof(buf))
- return -EINVAL;
-
- if (copy_from_user(buf, buffer, count))
- return -EFAULT;
-
- buf[count] = '\0';
- if (kstrtou32(buf, 0, &val))
- return -EINVAL;
-
- rc = bnxt_re_configure_cc(rdev, cc_gen, offset, val);
+ rc = kstrtou32_from_user(buffer, count, 0, &val);
+ if (!rc)
+ rc = bnxt_re_configure_cc(rdev, cc_gen, offset, val);
return rc ? rc : count;
}
@@ -374,20 +365,12 @@ static ssize_t cq_coal_cfg_write(struct file *file,
struct seq_file *s = file->private_data;
struct bnxt_re_cq_coal_param *param = s->private;
struct bnxt_re_dev *rdev = param->rdev;
- int offset = param->offset;
- char lbuf[16] = { };
+ int ret, offset = param->offset;
u32 val;
- if (count > sizeof(lbuf))
- return -EINVAL;
-
- if (copy_from_user(lbuf, buf, count))
- return -EFAULT;
-
- lbuf[sizeof(lbuf) - 1] = '\0';
-
- if (kstrtou32(lbuf, 0, &val))
- return -EINVAL;
+ ret = kstrtou32_from_user(buf, count, 0, &val);
+ if (ret)
+ return ret;
switch (offset) {
case BNXT_RE_COAL_CQ_BUF_MAXTIME: