summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2026-07-23 10:18:45 +0300
committerLeon Romanovsky <leon@kernel.org>2026-07-23 06:05:44 -0400
commit66fd61fe1aa7177bdf9de6f27989307e6a73bfbb (patch)
tree63a46e06f342b33daa59d0b7e7d445beda2596c3
parent7ddcd75596cf124d84cfe9f36ea877e7d87f9dcc (diff)
downloadlinux-next-66fd61fe1aa7177bdf9de6f27989307e6a73bfbb.tar.gz
linux-next-66fd61fe1aa7177bdf9de6f27989307e6a73bfbb.zip
RDMA/ocrdma: accept boolean value in ocrdma_dbgfs_ops_write()
Since reset is actually controlled by the boolean flag rather than long, switch to 'kstrtobool_from_user()' and use the latter for an overall simplification of 'ocrdma_dbgfs_ops_write()'. Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> Link: https://patch.msgid.link/20260723071845.568718-1-dmantipov@yandex.ru Signed-off-by: Leon Romanovsky <leon@kernel.org>
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_stats.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
index 0834416cb3f8..8f26f62f2243 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
@@ -635,39 +635,29 @@ static ssize_t ocrdma_dbgfs_ops_write(struct file *filp,
const char __user *buffer,
size_t count, loff_t *ppos)
{
- char tmp_str[32];
- long reset;
+ bool reset;
int status;
struct ocrdma_stats *pstats = filp->private_data;
struct ocrdma_dev *dev = pstats->dev;
- if (*ppos != 0 || count == 0 || count > sizeof(tmp_str))
- goto err;
-
- if (copy_from_user(tmp_str, buffer, count))
- goto err;
-
- tmp_str[count-1] = '\0';
- if (kstrtol(tmp_str, 10, &reset))
- goto err;
+ status = kstrtobool_from_user(buffer, count, &reset);
+ if (status)
+ return status;
switch (pstats->type) {
case OCRDMA_RESET_STATS:
if (reset) {
status = ocrdma_mbx_rdma_stats(dev, true);
- if (status) {
+ if (status)
pr_err("Failed to reset stats = %d\n", status);
- goto err;
- }
}
break;
default:
- goto err;
+ status = -EINVAL;
+ break;
}
- return count;
-err:
- return -EFAULT;
+ return status ? status : count;
}
void ocrdma_pma_counters(struct ocrdma_dev *dev, struct ib_mad *out_mad)