Commit 2d9c1bd7 authored by Matan Barak's avatar Matan Barak Committed by Jason Gunthorpe

IB/uverbs: Add a macro to define a type with no kernel known size

Sometimes the uverbs uAPI  doesn't really care about the structure it gets
from user-space. All it wants to do is to allocate enough space and send
it to the hardware/provider driver. Adding a UVERBS_ATTR_MIN_SIZE that
could be used for this scenarios. We use USHRT_MAX as the kernel known
size to bypass any zero validations.
Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 8762d149
...@@ -207,10 +207,10 @@ int uverbs_destroy_def_handler(struct ib_device *ib_dev, ...@@ -207,10 +207,10 @@ int uverbs_destroy_def_handler(struct ib_device *ib_dev,
* spec. * spec.
*/ */
const struct uverbs_attr_def uverbs_uhw_compat_in = const struct uverbs_attr_def uverbs_uhw_compat_in =
UVERBS_ATTR_PTR_IN_SZ(UVERBS_ATTR_UHW_IN, UVERBS_ATTR_SIZE(0, USHRT_MAX), UVERBS_ATTR_PTR_IN_SZ(UVERBS_ATTR_UHW_IN, UVERBS_ATTR_MIN_SIZE(0),
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)); UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO));
const struct uverbs_attr_def uverbs_uhw_compat_out = const struct uverbs_attr_def uverbs_uhw_compat_out =
UVERBS_ATTR_PTR_OUT_SZ(UVERBS_ATTR_UHW_OUT, UVERBS_ATTR_SIZE(0, USHRT_MAX), UVERBS_ATTR_PTR_OUT_SZ(UVERBS_ATTR_UHW_OUT, UVERBS_ATTR_MIN_SIZE(0),
UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO)); UA_FLAGS(UVERBS_ATTR_SPEC_F_MIN_SZ_OR_ZERO));
void create_udata(struct uverbs_attr_bundle *ctx, struct ib_udata *udata) void create_udata(struct uverbs_attr_bundle *ctx, struct ib_udata *udata)
......
...@@ -215,6 +215,8 @@ struct uverbs_object_tree_def { ...@@ -215,6 +215,8 @@ struct uverbs_object_tree_def {
.min_len = ((uintptr_t)(&((_type *)0)->_last + 1)), .len = sizeof(_type) .min_len = ((uintptr_t)(&((_type *)0)->_last + 1)), .len = sizeof(_type)
#define UVERBS_ATTR_SIZE(_min_len, _len) \ #define UVERBS_ATTR_SIZE(_min_len, _len) \
.min_len = _min_len, .len = _len .min_len = _min_len, .len = _len
#define UVERBS_ATTR_MIN_SIZE(_min_len) \
UVERBS_ATTR_SIZE(_min_len, USHRT_MAX)
/* /*
* In new compiler, UVERBS_ATTR could be simplified by declaring it as * In new compiler, UVERBS_ATTR could be simplified by declaring it as
......
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