Remove the return of -errno and always return codes via errno.
As documented in librdmacm, these libraries are already documented
to return -1 to indicate the code is in errno.

Also fix an errant return of 0 if the read/write syscalls return 0.

Signed-off-by: Jason Gunthorpe <[email protected]>
---
 src/cm.c |   89 +++++++++++++++++++++++++++++++++----------------------------
 1 files changed, 48 insertions(+), 41 deletions(-)

Same deal as before.. this is now aligned with POSIX conventions.

diff --git a/src/cm.c b/src/cm.c
index 7370abe..abc0863 100644
--- a/src/cm.c
+++ b/src/cm.c
@@ -67,6 +67,13 @@
 static int abi_ver;
 static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
 
+static inline int ERR(int err)
+{
+       errno = err;
+       return -1;
+}
+
+
 #define CM_CREATE_MSG_CMD_RESP(msg, cmd, resp, type, size) \
 do {                                        \
        struct cm_abi_cmd_hdr *hdr;         \
@@ -74,7 +81,7 @@ do {                                        \
        size = sizeof(*hdr) + sizeof(*cmd); \
        msg = alloca(size);                 \
        if (!msg)                           \
-               return -ENOMEM;             \
+               return ERR(ENOMEM);         \
        hdr = msg;                          \
        cmd = msg + sizeof(*hdr);           \
        hdr->cmd = type;                    \
@@ -83,7 +90,7 @@ do {                                        \
        memset(cmd, 0, sizeof(*cmd));       \
        resp = alloca(sizeof(*resp));       \
        if (!resp)                          \
-               return -ENOMEM;             \
+               return ERR(ENOMEM);         \
        cmd->response = (uintptr_t)resp;\
 } while (0)
 
@@ -94,7 +101,7 @@ do {                                        \
        size = sizeof(*hdr) + sizeof(*cmd); \
        msg = alloca(size);                 \
        if (!msg)                           \
-               return -ENOMEM;             \
+               return ERR(ENOMEM);         \
        hdr = msg;                          \
        cmd = msg + sizeof(*hdr);           \
        hdr->cmd = type;                    \
@@ -228,7 +235,7 @@ int ib_cm_create_id(struct ib_cm_device *device,
 
        cm_id_priv = ib_cm_alloc_id(device, context);
        if (!cm_id_priv)
-               return -ENOMEM;
+               return ERR(ENOMEM);
 
        CM_CREATE_MSG_CMD_RESP(msg, cmd, resp, IB_USER_CM_CMD_CREATE_ID, size);
        cmd->uid = (uintptr_t) cm_id_priv;
@@ -261,7 +268,7 @@ int ib_cm_destroy_id(struct ib_cm_id *cm_id)
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        VALGRIND_MAKE_MEM_DEFINED(resp, sizeof *resp);
 
@@ -285,14 +292,14 @@ int ib_cm_attr_id(struct ib_cm_id *cm_id, struct 
ib_cm_attr_param *param)
        int size;
 
        if (!param)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        CM_CREATE_MSG_CMD_RESP(msg, cmd, resp, IB_USER_CM_CMD_ATTR_ID, size);
        cmd->id = cm_id->handle;
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        VALGRIND_MAKE_MEM_DEFINED(resp, sizeof *resp);
 
@@ -314,7 +321,7 @@ int ib_cm_init_qp_attr(struct ib_cm_id *cm_id,
        int size;
 
        if (!qp_attr || !qp_attr_mask)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        CM_CREATE_MSG_CMD_RESP(msg, cmd, resp, IB_USER_CM_CMD_INIT_QP_ATTR, 
size);
        cmd->id = cm_id->handle;
@@ -322,7 +329,7 @@ int ib_cm_init_qp_attr(struct ib_cm_id *cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        VALGRIND_MAKE_MEM_DEFINED(resp, sizeof *resp);
 
@@ -348,7 +355,7 @@ int ib_cm_listen(struct ib_cm_id *cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -363,7 +370,7 @@ int ib_cm_send_req(struct ib_cm_id *cm_id, struct 
ib_cm_req_param *param)
        int size;
 
        if (!param)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        CM_CREATE_MSG_CMD(msg, cmd, IB_USER_CM_CMD_SEND_REQ, size);
        cmd->id                         = cm_id->handle;
@@ -385,7 +392,7 @@ int ib_cm_send_req(struct ib_cm_id *cm_id, struct 
ib_cm_req_param *param)
        if (param->primary_path) {
                p_path = alloca(sizeof(*p_path));
                if (!p_path)
-                       return -ENOMEM;
+                       return ERR(ENOMEM);
 
                ibv_copy_path_rec_to_kern(p_path, param->primary_path);
                cmd->primary_path = (uintptr_t) p_path;
@@ -394,7 +401,7 @@ int ib_cm_send_req(struct ib_cm_id *cm_id, struct 
ib_cm_req_param *param)
        if (param->alternate_path) {
                a_path = alloca(sizeof(*a_path));
                if (!a_path)
-                       return -ENOMEM;
+                       return ERR(ENOMEM);
 
                ibv_copy_path_rec_to_kern(a_path, param->alternate_path);
                cmd->alternate_path = (uintptr_t) a_path;
@@ -407,7 +414,7 @@ int ib_cm_send_req(struct ib_cm_id *cm_id, struct 
ib_cm_req_param *param)
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -420,7 +427,7 @@ int ib_cm_send_rep(struct ib_cm_id *cm_id, struct 
ib_cm_rep_param *param)
        int size;
 
        if (!param)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        CM_CREATE_MSG_CMD(msg, cmd, IB_USER_CM_CMD_SEND_REP, size);
        cmd->uid = (uintptr_t) container_of(cm_id, struct cm_id_private, id);
@@ -442,7 +449,7 @@ int ib_cm_send_rep(struct ib_cm_id *cm_id, struct 
ib_cm_rep_param *param)
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -467,7 +474,7 @@ static inline int cm_send_private_data(struct ib_cm_id 
*cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -508,7 +515,7 @@ static int cm_establish(struct ib_cm_id *cm_id)
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -524,7 +531,7 @@ int ib_cm_notify(struct ib_cm_id *cm_id, enum 
ibv_event_type event)
                if (event == IBV_EVENT_COMM_EST)
                        return cm_establish(cm_id);
                else
-                       return -EINVAL;
+                       return ERR(EINVAL);
        }
 
        CM_CREATE_MSG_CMD(msg, cmd, IB_USER_CM_CMD_NOTIFY, size);
@@ -533,7 +540,7 @@ int ib_cm_notify(struct ib_cm_id *cm_id, enum 
ibv_event_type event)
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -567,7 +574,7 @@ static inline int cm_send_status(struct ib_cm_id *cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -617,7 +624,7 @@ int ib_cm_send_mra(struct ib_cm_id *cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -639,7 +646,7 @@ int ib_cm_send_lap(struct ib_cm_id *cm_id,
        if (alternate_path) {
                abi_path = alloca(sizeof(*abi_path));
                if (!abi_path)
-                       return -ENOMEM;
+                       return ERR(ENOMEM);
 
                ibv_copy_path_rec_to_kern(abi_path, alternate_path);
                cmd->path = (uintptr_t) abi_path;
@@ -652,7 +659,7 @@ int ib_cm_send_lap(struct ib_cm_id *cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -667,7 +674,7 @@ int ib_cm_send_sidr_req(struct ib_cm_id *cm_id,
        int size;
 
        if (!param)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        CM_CREATE_MSG_CMD(msg, cmd, IB_USER_CM_CMD_SEND_SIDR_REQ, size);
        cmd->id             = cm_id->handle;
@@ -679,7 +686,7 @@ int ib_cm_send_sidr_req(struct ib_cm_id *cm_id,
        if (param->path) {
                abi_path = alloca(sizeof(*abi_path));
                if (!abi_path)
-                       return -ENOMEM;
+                       return ERR(ENOMEM);
 
                ibv_copy_path_rec_to_kern(abi_path, param->path);
                cmd->path = (uintptr_t) abi_path;
@@ -692,7 +699,7 @@ int ib_cm_send_sidr_req(struct ib_cm_id *cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -706,7 +713,7 @@ int ib_cm_send_sidr_rep(struct ib_cm_id *cm_id,
        int size;
 
        if (!param)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        CM_CREATE_MSG_CMD(msg, cmd, IB_USER_CM_CMD_SEND_SIDR_REP, size);
        cmd->id     = cm_id->handle;
@@ -726,7 +733,7 @@ int ib_cm_send_sidr_rep(struct ib_cm_id *cm_id,
 
        result = write(cm_id->device->fd, msg, size);
        if (result != size)
-               return (result > 0) ? -ENODATA : result;
+               return (result >= 0) ? ERR(ENODATA) : -1;
 
        return 0;
 }
@@ -795,12 +802,12 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
        int size;
        
        if (!event)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        size = sizeof(*hdr) + sizeof(*cmd);
        msg = alloca(size);
        if (!msg)
-               return -ENOMEM;
+               return ERR(ENOMEM);
 
        hdr = msg;
        cmd = msg + sizeof(*hdr);
@@ -813,7 +820,7 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
 
        resp = alloca(sizeof(*resp));
        if (!resp)
-               return -ENOMEM;
+               return ERR(ENOMEM);
        
        cmd->response = (uintptr_t) resp;
        cmd->data_len = (uint8_t)(~0U);
@@ -821,13 +828,13 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
 
        data = malloc(cmd->data_len);
        if (!data) {
-               result = -ENOMEM;
+               result = ERR(ENOMEM);
                goto done;
        }
 
        info = malloc(cmd->info_len);
        if (!info) {
-               result = -ENOMEM;
+               result = ERR(ENOMEM);
                goto done;
        }
 
@@ -836,7 +843,7 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
 
        result = write(device->fd, msg, size);
        if (result != size) {
-               result = (result > 0) ? -ENODATA : result;
+               result = (result >= 0) ? ERR(ENODATA) : -1;
                goto done;
        }
 
@@ -847,7 +854,7 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
         */
        evt = malloc(sizeof(*evt));
        if (!evt) {
-               result = -ENOMEM;
+               result = ERR(ENOMEM);
                goto done;
        }
        memset(evt, 0, sizeof(*evt));
@@ -857,7 +864,7 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
        if (resp->present & CM_ABI_PRES_PRIMARY) {
                path_a = malloc(sizeof(*path_a));
                if (!path_a) {
-                       result = -ENOMEM;
+                       result = ERR(ENOMEM);
                        goto done;
                }
        }
@@ -865,7 +872,7 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
        if (resp->present & CM_ABI_PRES_ALTERNATE) {
                path_b = malloc(sizeof(*path_b));
                if (!path_b) {
-                       result = -ENOMEM;
+                       result = ERR(ENOMEM);
                        goto done;
                }
        }
@@ -876,7 +883,7 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
                cm_id_priv = ib_cm_alloc_id(evt->cm_id->device,
                                            evt->cm_id->context);
                if (!cm_id_priv) {
-                       result = -ENOMEM;
+                       result = ERR(ENOMEM);
                        goto done;
                }
                cm_id_priv->id.handle = resp->id;
@@ -914,7 +921,7 @@ int ib_cm_get_event(struct ib_cm_device *device, struct 
ib_cm_event **event)
                cm_id_priv = ib_cm_alloc_id(evt->cm_id->device,
                                            evt->cm_id->context);
                if (!cm_id_priv) {
-                       result = -ENOMEM;
+                       result = ERR(ENOMEM);
                        goto done;
                }
                cm_id_priv->id.handle = resp->id;
@@ -961,7 +968,7 @@ int ib_cm_ack_event(struct ib_cm_event *event)
        struct cm_id_private *cm_id_priv;
 
        if (!event)
-               return -EINVAL;
+               return ERR(EINVAL);
 
        if (event->private_data)
                free(event->private_data);
-- 
1.6.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to