Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74a0b0a5 authored by Eli Cohen's avatar Eli Cohen Committed by Doug Ledford
Browse files

IB/core: Avoid duplicate code



Move the check on the validity of the command to a common area.

Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent bbdfcf18
Loading
Loading
Loading
Loading
+9 −20
Original line number Diff line number Diff line
@@ -689,6 +689,7 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
	struct ib_uverbs_file *file = filp->private_data;
	struct ib_device *ib_dev;
	struct ib_uverbs_cmd_hdr hdr;
	__u32 command;
	__u32 flags;
	int srcu_key;
	ssize_t ret;
@@ -707,12 +708,6 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
		goto out;
	}

	flags = (hdr.command &
		 IB_USER_VERBS_CMD_FLAGS_MASK) >> IB_USER_VERBS_CMD_FLAGS_SHIFT;

	if (!flags) {
		__u32 command;

	if (hdr.command & ~(__u32)(IB_USER_VERBS_CMD_FLAGS_MASK |
				   IB_USER_VERBS_CMD_COMMAND_MASK)) {
		ret = -EINVAL;
@@ -721,6 +716,10 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,

	command = hdr.command & IB_USER_VERBS_CMD_COMMAND_MASK;

	flags = (hdr.command &
		 IB_USER_VERBS_CMD_FLAGS_MASK) >> IB_USER_VERBS_CMD_FLAGS_SHIFT;

	if (!flags) {
		if (command >= ARRAY_SIZE(uverbs_cmd_table) ||
		    !uverbs_cmd_table[command]) {
			ret = -EINVAL;
@@ -749,21 +748,11 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
						 hdr.out_words * 4);

	} else if (flags == IB_USER_VERBS_CMD_FLAG_EXTENDED) {
		__u32 command;

		struct ib_uverbs_ex_cmd_hdr ex_hdr;
		struct ib_udata ucore;
		struct ib_udata uhw;
		size_t written_count = count;

		if (hdr.command & ~(__u32)(IB_USER_VERBS_CMD_FLAGS_MASK |
					   IB_USER_VERBS_CMD_COMMAND_MASK)) {
			ret = -EINVAL;
			goto out;
		}

		command = hdr.command & IB_USER_VERBS_CMD_COMMAND_MASK;

		if (command >= ARRAY_SIZE(uverbs_ex_cmd_table) ||
		    !uverbs_ex_cmd_table[command]) {
			ret = -ENOSYS;