|
@@ -271,16 +271,16 @@ static ssize_t size_write(struct file *filp, const char __user *buf,
|
|
|
{
|
|
|
struct mlx5_cache_ent *ent = filp->private_data;
|
|
|
struct mlx5_ib_dev *dev = ent->dev;
|
|
|
- char lbuf[20];
|
|
|
+ char lbuf[20] = {0};
|
|
|
u32 var;
|
|
|
int err;
|
|
|
int c;
|
|
|
|
|
|
- if (copy_from_user(lbuf, buf, sizeof(lbuf)))
|
|
|
+ count = min(count, sizeof(lbuf) - 1);
|
|
|
+ if (copy_from_user(lbuf, buf, count))
|
|
|
return -EFAULT;
|
|
|
|
|
|
c = order2idx(dev, ent->order);
|
|
|
- lbuf[sizeof(lbuf) - 1] = 0;
|
|
|
|
|
|
if (sscanf(lbuf, "%u", &var) != 1)
|
|
|
return -EINVAL;
|
|
@@ -310,19 +310,11 @@ static ssize_t size_read(struct file *filp, char __user *buf, size_t count,
|
|
|
char lbuf[20];
|
|
|
int err;
|
|
|
|
|
|
- if (*pos)
|
|
|
- return 0;
|
|
|
-
|
|
|
err = snprintf(lbuf, sizeof(lbuf), "%d\n", ent->size);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
|
|
|
- if (copy_to_user(buf, lbuf, err))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- *pos += err;
|
|
|
-
|
|
|
- return err;
|
|
|
+ return simple_read_from_buffer(buf, count, pos, lbuf, err);
|
|
|
}
|
|
|
|
|
|
static const struct file_operations size_fops = {
|
|
@@ -337,16 +329,16 @@ static ssize_t limit_write(struct file *filp, const char __user *buf,
|
|
|
{
|
|
|
struct mlx5_cache_ent *ent = filp->private_data;
|
|
|
struct mlx5_ib_dev *dev = ent->dev;
|
|
|
- char lbuf[20];
|
|
|
+ char lbuf[20] = {0};
|
|
|
u32 var;
|
|
|
int err;
|
|
|
int c;
|
|
|
|
|
|
- if (copy_from_user(lbuf, buf, sizeof(lbuf)))
|
|
|
+ count = min(count, sizeof(lbuf) - 1);
|
|
|
+ if (copy_from_user(lbuf, buf, count))
|
|
|
return -EFAULT;
|
|
|
|
|
|
c = order2idx(dev, ent->order);
|
|
|
- lbuf[sizeof(lbuf) - 1] = 0;
|
|
|
|
|
|
if (sscanf(lbuf, "%u", &var) != 1)
|
|
|
return -EINVAL;
|
|
@@ -372,19 +364,11 @@ static ssize_t limit_read(struct file *filp, char __user *buf, size_t count,
|
|
|
char lbuf[20];
|
|
|
int err;
|
|
|
|
|
|
- if (*pos)
|
|
|
- return 0;
|
|
|
-
|
|
|
err = snprintf(lbuf, sizeof(lbuf), "%d\n", ent->limit);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
|
|
|
- if (copy_to_user(buf, lbuf, err))
|
|
|
- return -EFAULT;
|
|
|
-
|
|
|
- *pos += err;
|
|
|
-
|
|
|
- return err;
|
|
|
+ return simple_read_from_buffer(buf, count, pos, lbuf, err);
|
|
|
}
|
|
|
|
|
|
static const struct file_operations limit_fops = {
|