Commit 7106a976 authored by Jason Gunthorpe's avatar Jason Gunthorpe
Browse files

RDMA/uverbs: Make write() handlers return 0 on success



Currently they return the command length, while all other handlers return
0. This makes the write path closer to the write_ex and ioctl path.

Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
parent 8313c10f
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -245,13 +245,11 @@ struct ib_uobject *__uobj_get_destroy(const struct uverbs_api_object *obj,
}

/*
 * Does both uobj_get_destroy() and uobj_put_destroy().  Returns success_res
 * on success (negative errno on failure). For use by callers that do not need
 * the uobj.
 * Does both uobj_get_destroy() and uobj_put_destroy().  Returns 0 on success
 * (negative errno on failure). For use by callers that do not need the uobj.
 */
int __uobj_perform_destroy(const struct uverbs_api_object *obj, u32 id,
			   const struct uverbs_attr_bundle *attrs,
			   int success_res)
			   const struct uverbs_attr_bundle *attrs)
{
	struct ib_uobject *uobj;

@@ -260,7 +258,7 @@ int __uobj_perform_destroy(const struct uverbs_api_object *obj, u32 id,
		return PTR_ERR(uobj);

	rdma_lookup_put_uobject(uobj, UVERBS_LOOKUP_WRITE);
	return success_res;
	return 0;
}

/* alloc_uobj must be undone by uverbs_destroy_uobject() */
+2 −2
Original line number Diff line number Diff line
@@ -137,8 +137,8 @@ struct uverbs_api_ioctl_method {
};

struct uverbs_api_write_method {
	ssize_t (*handler)(struct uverbs_attr_bundle *attrs,
			   const char __user *buf, int in_len, int out_len);
	int (*handler)(struct uverbs_attr_bundle *attrs, const char __user *buf,
		       int in_len, int out_len);
	int (*handler_ex)(struct uverbs_attr_bundle *attrs,
			  struct ib_udata *ucore, struct ib_udata *uhw);
	u8 disabled:1;
+122 −168

File changed.

Preview size limit exceeded, changes collapsed.

+1 −2
Original line number Diff line number Diff line
@@ -688,11 +688,10 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
					ex_hdr.provider_out_words * 8);

		ret = method_elm->handler_ex(&bundle, &ucore, &uhw);
		ret = (ret) ? : count;
	}

	srcu_read_unlock(&file->device->disassociate_srcu, srcu_key);
	return ret;
	return (ret) ? : count;
}

static int ib_uverbs_mmap(struct file *filp, struct vm_area_struct *vma)
+2 −3
Original line number Diff line number Diff line
@@ -8,9 +8,8 @@
#include "rdma_core.h"
#include "uverbs.h"

static ssize_t ib_uverbs_notsupp(struct uverbs_attr_bundle *attrs,
				 const char __user *buf, int in_len,
				 int out_len)
static int ib_uverbs_notsupp(struct uverbs_attr_bundle *attrs,
			     const char __user *buf, int in_len, int out_len)
{
	return -EOPNOTSUPP;
}
Loading