Commit 974d6b4b authored by Jason Gunthorpe's avatar Jason Gunthorpe Committed by Doug Ledford

RDMA/uverbs: Use only attrs for the write() handler signature

All of the old arguments can be derived from the uverbs_attr_bundle
structure, so get rid of the redundant arguments. Most of the prior work
has been removing users of the arguments to allow this to be a simple
patch.
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent ece9ca97
...@@ -137,10 +137,7 @@ struct uverbs_api_ioctl_method { ...@@ -137,10 +137,7 @@ struct uverbs_api_ioctl_method {
}; };
struct uverbs_api_write_method { struct uverbs_api_write_method {
int (*handler)(struct uverbs_attr_bundle *attrs, const char __user *buf, int (*handler)(struct uverbs_attr_bundle *attrs);
int in_len, int out_len);
int (*handler_ex)(struct uverbs_attr_bundle *attrs,
struct ib_udata *ucore);
u8 disabled:1; u8 disabled:1;
u8 is_ex:1; u8 is_ex:1;
u8 has_udata:1; u8 has_udata:1;
......
This diff is collapsed.
...@@ -739,8 +739,6 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf, ...@@ -739,8 +739,6 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
ib_uverbs_init_udata_buf_or_null( ib_uverbs_init_udata_buf_or_null(
&bundle.ucore, buf, u64_to_user_ptr(response), &bundle.ucore, buf, u64_to_user_ptr(response),
in_len, out_len); in_len, out_len);
ret = method_elm->handler(&bundle, buf, in_len, out_len);
} else { } else {
buf += sizeof(ex_hdr); buf += sizeof(ex_hdr);
...@@ -754,9 +752,9 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf, ...@@ -754,9 +752,9 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
ex_hdr.provider_in_words * 8, ex_hdr.provider_in_words * 8,
ex_hdr.provider_out_words * 8); ex_hdr.provider_out_words * 8);
ret = method_elm->handler_ex(&bundle, &bundle.ucore);
} }
ret = method_elm->handler(&bundle);
out_unlock: out_unlock:
srcu_read_unlock(&file->device->disassociate_srcu, srcu_key); srcu_read_unlock(&file->device->disassociate_srcu, srcu_key);
return (ret) ? : count; return (ret) ? : count;
......
...@@ -8,14 +8,7 @@ ...@@ -8,14 +8,7 @@
#include "rdma_core.h" #include "rdma_core.h"
#include "uverbs.h" #include "uverbs.h"
static int ib_uverbs_notsupp(struct uverbs_attr_bundle *attrs, static int ib_uverbs_notsupp(struct uverbs_attr_bundle *attrs)
const char __user *buf, int in_len, int out_len)
{
return -EOPNOTSUPP;
}
static int ib_uverbs_ex_notsupp(struct uverbs_attr_bundle *attrs,
struct ib_udata *ucore)
{ {
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
...@@ -79,22 +72,17 @@ static int uapi_create_write(struct uverbs_api *uapi, ...@@ -79,22 +72,17 @@ static int uapi_create_write(struct uverbs_api *uapi,
if (IS_ERR(method_elm)) if (IS_ERR(method_elm))
return PTR_ERR(method_elm); return PTR_ERR(method_elm);
if (WARN_ON(exists && (def->write.is_ex != method_elm->is_ex || if (WARN_ON(exists && (def->write.is_ex != method_elm->is_ex)))
method_elm->handler_ex || method_elm->handler)))
return -EINVAL; return -EINVAL;
method_elm->is_ex = def->write.is_ex; method_elm->is_ex = def->write.is_ex;
if (def->write.is_ex) { method_elm->handler = def->func_write;
method_elm->handler_ex = def->func_write_ex; if (def->write.is_ex)
method_elm->disabled = !(ibdev->uverbs_ex_cmd_mask & method_elm->disabled = !(ibdev->uverbs_ex_cmd_mask &
BIT_ULL(def->write.command_num)); BIT_ULL(def->write.command_num));
} else { else
method_elm->handler = def->func_write;
method_elm->disabled = !(ibdev->uverbs_cmd_mask & method_elm->disabled = !(ibdev->uverbs_cmd_mask &
BIT_ULL(def->write.command_num)); BIT_ULL(def->write.command_num));
}
if (!def->write.is_ex && def->func_write) { if (!def->write.is_ex && def->func_write) {
method_elm->has_udata = def->write.has_udata; method_elm->has_udata = def->write.has_udata;
...@@ -449,7 +437,6 @@ static int uapi_finalize(struct uverbs_api *uapi) ...@@ -449,7 +437,6 @@ static int uapi_finalize(struct uverbs_api *uapi)
} }
uapi->notsupp_method.handler = ib_uverbs_notsupp; uapi->notsupp_method.handler = ib_uverbs_notsupp;
uapi->notsupp_method.handler_ex = ib_uverbs_ex_notsupp;
uapi->num_write = max_write + 1; uapi->num_write = max_write + 1;
uapi->num_write_ex = max_write_ex + 1; uapi->num_write_ex = max_write_ex + 1;
data = kmalloc_array(uapi->num_write + uapi->num_write_ex, data = kmalloc_array(uapi->num_write + uapi->num_write_ex,
......
...@@ -373,11 +373,7 @@ struct uapi_definition { ...@@ -373,11 +373,7 @@ struct uapi_definition {
union { union {
bool (*func_is_supported)(struct ib_device *device); bool (*func_is_supported)(struct ib_device *device);
int (*func_write)(struct uverbs_attr_bundle *attrs, int (*func_write)(struct uverbs_attr_bundle *attrs);
const char __user *buf, int in_len,
int out_len);
int (*func_write_ex)(struct uverbs_attr_bundle *attrs,
struct ib_udata *ucore);
const struct uapi_definition *chain; const struct uapi_definition *chain;
const struct uverbs_object_def *chain_obj_tree; const struct uverbs_object_def *chain_obj_tree;
size_t needs_fn_offset; size_t needs_fn_offset;
...@@ -409,7 +405,7 @@ struct uapi_definition { ...@@ -409,7 +405,7 @@ struct uapi_definition {
.kind = UAPI_DEF_WRITE, \ .kind = UAPI_DEF_WRITE, \
.scope = UAPI_SCOPE_OBJECT, \ .scope = UAPI_SCOPE_OBJECT, \
.write = { .is_ex = 1, .command_num = _command_num }, \ .write = { .is_ex = 1, .command_num = _command_num }, \
.func_write_ex = _func, \ .func_write = _func, \
_cmd_desc, \ _cmd_desc, \
}, \ }, \
##__VA_ARGS__ ##__VA_ARGS__
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment