RDMA/uverbs: Use UVERBS_ATTR_MIN_SIZE correctly and uniformly
authorJason Gunthorpe <jgg@mellanox.com>
Wed, 4 Jul 2018 05:50:30 +0000 (08:50 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 4 Jul 2018 19:47:01 +0000 (13:47 -0600)
This newer macro allows specifying a lower bound on the accepted size, and
has an 'unlimited' upper bound. Due to this it never checks for trailing
zeroing so it doesn't make any sense to combine it with MIN_SZ_OR_ZERO, so
drop MIN_SZ_OR_ZERO when they are used together

There were a couple of places that open coded this pattern, switch them to
use the clearer UVERBS_ATTR_MIN_SIZE for clarity.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
drivers/infiniband/core/uverbs_std_types_counters.c
drivers/infiniband/hw/mlx5/devx.c
include/rdma/uverbs_ioctl.h

index 202e3782e740f0277ed24277339549c3decd4607..dfe59ad721f6350e83fc9b4f0b1851b626d23f8a 100644 (file)
@@ -138,7 +138,6 @@ DECLARE_UVERBS_NAMED_METHOD_DESTROY(
                        UVERBS_ACCESS_DESTROY,
                        UA_MANDATORY));
 
-#define MAX_COUNTERS_BUFF_SIZE USHRT_MAX
 DECLARE_UVERBS_NAMED_METHOD(
        UVERBS_METHOD_COUNTERS_READ,
        UVERBS_ATTR_IDR(UVERBS_ATTR_READ_COUNTERS_HANDLE,
@@ -146,7 +145,7 @@ DECLARE_UVERBS_NAMED_METHOD(
                        UVERBS_ACCESS_READ,
                        UA_MANDATORY),
        UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_READ_COUNTERS_BUFF,
-                           UVERBS_ATTR_SIZE(0, MAX_COUNTERS_BUFF_SIZE),
+                           UVERBS_ATTR_MIN_SIZE(0),
                            UA_MANDATORY),
        UVERBS_ATTR_PTR_IN(UVERBS_ATTR_READ_COUNTERS_FLAGS,
                           UVERBS_ATTR_TYPE(__u32),
index be44e7e837ebc3f6ceb12ef736a50a0c28904fd6..192844bf601622fd9e8d25d43b818e35cd111b88 100644 (file)
@@ -1034,13 +1034,11 @@ DECLARE_UVERBS_NAMED_METHOD(
                MLX5_IB_ATTR_DEVX_OTHER_CMD_IN,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
                UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO,
                UA_ALLOC_AND_COPY),
        UVERBS_ATTR_PTR_OUT(
                MLX5_IB_ATTR_DEVX_OTHER_CMD_OUT,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
-               UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO));
+               UA_MANDATORY));
 
 DECLARE_UVERBS_NAMED_METHOD(
        MLX5_IB_METHOD_DEVX_OBJ_CREATE,
@@ -1052,13 +1050,11 @@ DECLARE_UVERBS_NAMED_METHOD(
                MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
                UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO,
                UA_ALLOC_AND_COPY),
        UVERBS_ATTR_PTR_OUT(
                MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
-               UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO));
+               UA_MANDATORY));
 
 DECLARE_UVERBS_NAMED_METHOD(
        MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
@@ -1077,13 +1073,11 @@ DECLARE_UVERBS_NAMED_METHOD(
                MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
                UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO,
                UA_ALLOC_AND_COPY),
        UVERBS_ATTR_PTR_OUT(
                MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_OUT,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
-               UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO));
+               UA_MANDATORY));
 
 DECLARE_UVERBS_NAMED_METHOD(
        MLX5_IB_METHOD_DEVX_OBJ_QUERY,
@@ -1095,13 +1089,11 @@ DECLARE_UVERBS_NAMED_METHOD(
                MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_in_cmd_hdr)),
                UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO,
                UA_ALLOC_AND_COPY),
        UVERBS_ATTR_PTR_OUT(
                MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
                UVERBS_ATTR_MIN_SIZE(MLX5_ST_SZ_BYTES(general_obj_out_cmd_hdr)),
-               UA_MANDATORY,
-               UA_MIN_SZ_OR_ZERO));
+               UA_MANDATORY));
 
 DECLARE_UVERBS_GLOBAL_METHODS(MLX5_IB_OBJECT_DEVX,
                              &UVERBS_METHOD(MLX5_IB_METHOD_DEVX_OTHER),
index 6073fd9d9c49cf2800525dd1df8633cf905857c6..0b46ef8f0b4c54227677591702c77fb4611be239 100644 (file)
@@ -207,8 +207,11 @@ struct uverbs_object_tree_def {
        .u.ptr.min_len = ((uintptr_t)(&((_type *)0)->_last + 1)), .u.ptr.len = sizeof(_type)
 #define UVERBS_ATTR_SIZE(_min_len, _len)                       \
        .u.ptr.min_len = _min_len, .u.ptr.len = _len
-#define UVERBS_ATTR_MIN_SIZE(_min_len)                         \
-       UVERBS_ATTR_SIZE(_min_len, USHRT_MAX)
+/*
+ * Specifies at least min_len bytes must be passed in, but the amount can be
+ * larger, up to the protocol maximum size. No check for zeroing is done.
+ */
+#define UVERBS_ATTR_MIN_SIZE(_min_len) UVERBS_ATTR_SIZE(_min_len, USHRT_MAX)
 
 /* Must be used in the '...' of any UVERBS_ATTR */
 #define UA_ALLOC_AND_COPY .alloc_and_copy = 1
@@ -265,13 +268,11 @@ struct uverbs_object_tree_def {
  */
 #define UVERBS_ATTR_UHW()                                                      \
        UVERBS_ATTR_PTR_IN(UVERBS_ATTR_UHW_IN,                                 \
-                          UVERBS_ATTR_SIZE(0, USHRT_MAX),                     \
-                          UA_OPTIONAL,                                        \
-                          UA_MIN_SZ_OR_ZERO),                                 \
+                          UVERBS_ATTR_MIN_SIZE(0),                            \
+                          UA_OPTIONAL),                                       \
        UVERBS_ATTR_PTR_OUT(UVERBS_ATTR_UHW_OUT,                               \
-                           UVERBS_ATTR_SIZE(0, USHRT_MAX),                    \
-                           UA_OPTIONAL,                                       \
-                           UA_MIN_SZ_OR_ZERO),                                \
+                           UVERBS_ATTR_MIN_SIZE(0),                           \
+                           UA_OPTIONAL)
 
 /*
  * =======================================