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

Commit e16769d4 authored by Andrzej Pietrasiewicz's avatar Andrzej Pietrasiewicz Committed by Christoph Hellwig
Browse files

fs: configfs: don't return anything from drop_link



Documentation/filesystems/configfs/configfs.txt says:

"When unlink(2) is called on the symbolic link, the source item is
notified via the ->drop_link() method.  Like the ->drop_item() method,
this is a void function and cannot return failure."

The ->drop_item() is indeed a void function, the ->drop_link() is
actually not. This, together with the fact that the value of ->drop_link()
is silently ignored suggests, that it is the ->drop_link() return
type that should be corrected and changed to void.

This patch changes drop_link() signature and all its users.

Signed-off-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
[hch: reverted reformatting of some code]
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent e5517c2a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ among other things. For that, it needs a type.
		void (*release)(struct config_item *);
		int (*allow_link)(struct config_item *src,
				  struct config_item *target);
		int (*drop_link)(struct config_item *src,
		void (*drop_link)(struct config_item *src,
				 struct config_item *target);
	};

+4 −6
Original line number Diff line number Diff line
@@ -466,7 +466,7 @@ static int nvmet_port_subsys_allow_link(struct config_item *parent,
	return ret;
}

static int nvmet_port_subsys_drop_link(struct config_item *parent,
static void nvmet_port_subsys_drop_link(struct config_item *parent,
		struct config_item *target)
{
	struct nvmet_port *port = to_nvmet_port(parent->ci_parent);
@@ -479,7 +479,7 @@ static int nvmet_port_subsys_drop_link(struct config_item *parent,
			goto found;
	}
	up_write(&nvmet_config_sem);
	return -EINVAL;
	return;

found:
	list_del(&p->entry);
@@ -488,7 +488,6 @@ static int nvmet_port_subsys_drop_link(struct config_item *parent,
		nvmet_disable_port(port);
	up_write(&nvmet_config_sem);
	kfree(p);
	return 0;
}

static struct configfs_item_operations nvmet_port_subsys_item_ops = {
@@ -542,7 +541,7 @@ static int nvmet_allowed_hosts_allow_link(struct config_item *parent,
	return ret;
}

static int nvmet_allowed_hosts_drop_link(struct config_item *parent,
static void nvmet_allowed_hosts_drop_link(struct config_item *parent,
		struct config_item *target)
{
	struct nvmet_subsys *subsys = to_subsys(parent->ci_parent);
@@ -555,14 +554,13 @@ static int nvmet_allowed_hosts_drop_link(struct config_item *parent,
			goto found;
	}
	up_write(&nvmet_config_sem);
	return -EINVAL;
	return;

found:
	list_del(&p->entry);
	nvmet_genctr++;
	up_write(&nvmet_config_sem);
	kfree(p);
	return 0;
}

static struct configfs_item_operations nvmet_allowed_hosts_item_ops = {
+3 −4
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ static int target_fabric_mappedlun_link(
	return core_dev_add_initiator_node_lun_acl(se_tpg, lacl, lun, lun_access_ro);
}

static int target_fabric_mappedlun_unlink(
static void target_fabric_mappedlun_unlink(
	struct config_item *lun_acl_ci,
	struct config_item *lun_ci)
{
@@ -146,7 +146,7 @@ static int target_fabric_mappedlun_unlink(
	struct se_lun *lun = container_of(to_config_group(lun_ci),
			struct se_lun, lun_group);

	return core_dev_del_initiator_node_lun_acl(lun, lacl);
	core_dev_del_initiator_node_lun_acl(lun, lacl);
}

static struct se_lun_acl *item_to_lun_acl(struct config_item *item)
@@ -669,7 +669,7 @@ static int target_fabric_port_link(
	return ret;
}

static int target_fabric_port_unlink(
static void target_fabric_port_unlink(
	struct config_item *lun_ci,
	struct config_item *se_dev_ci)
{
@@ -688,7 +688,6 @@ static int target_fabric_port_unlink(
	}

	core_dev_del_lun(se_tpg, lun);
	return 0;
}

static void target_fabric_port_release(struct config_item *item)
+3 −5
Original line number Diff line number Diff line
@@ -408,7 +408,7 @@ static int config_usb_cfg_link(
	return ret;
}

static int config_usb_cfg_unlink(
static void config_usb_cfg_unlink(
	struct config_item *usb_cfg_ci,
	struct config_item *usb_func_ci)
{
@@ -437,12 +437,11 @@ static int config_usb_cfg_unlink(
			list_del(&f->list);
			usb_put_function(f);
			mutex_unlock(&gi->lock);
			return 0;
			return;
		}
	}
	mutex_unlock(&gi->lock);
	WARN(1, "Unable to locate function to unbind\n");
	return 0;
}

static struct configfs_item_operations gadget_config_item_ops = {
@@ -865,7 +864,7 @@ static int os_desc_link(struct config_item *os_desc_ci,
	return ret;
}

static int os_desc_unlink(struct config_item *os_desc_ci,
static void os_desc_unlink(struct config_item *os_desc_ci,
			  struct config_item *usb_cfg_ci)
{
	struct gadget_info *gi = container_of(to_config_group(os_desc_ci),
@@ -878,7 +877,6 @@ static int os_desc_unlink(struct config_item *os_desc_ci,
	cdev->os_desc_config = NULL;
	WARN_ON(gi->composite.gadget_driver.udc_name);
	mutex_unlock(&gi->lock);
	return 0;
}

static struct configfs_item_operations os_desc_ops = {
+5 −20
Original line number Diff line number Diff line
@@ -547,7 +547,7 @@ static int uvcg_control_class_allow_link(struct config_item *src,
	return ret;
}

static int uvcg_control_class_drop_link(struct config_item *src,
static void uvcg_control_class_drop_link(struct config_item *src,
					struct config_item *target)
{
	struct config_item *control, *header;
@@ -555,7 +555,6 @@ static int uvcg_control_class_drop_link(struct config_item *src,
	struct mutex *su_mutex = &src->ci_group->cg_subsys->su_mutex;
	struct uvc_descriptor_header **class_array;
	struct uvcg_control_header *target_hdr;
	int ret = -EINVAL;

	mutex_lock(su_mutex); /* for navigating configfs hierarchy */

@@ -569,23 +568,17 @@ static int uvcg_control_class_drop_link(struct config_item *src,
	mutex_lock(&opts->lock);

	class_array = uvcg_get_ctl_class_arr(src, opts);
	if (!class_array)
		goto unlock;
	if (opts->refcnt) {
		ret = -EBUSY;
	if (!class_array || opts->refcnt)
		goto unlock;
	}

	target_hdr = to_uvcg_control_header(target);
	--target_hdr->linked;
	class_array[0] = NULL;
	ret = 0;

unlock:
	mutex_unlock(&opts->lock);
out:
	mutex_unlock(su_mutex);
	return ret;
}

static struct configfs_item_operations uvcg_control_class_item_ops = {
@@ -777,7 +770,7 @@ static int uvcg_streaming_header_allow_link(struct config_item *src,
	return ret;
}

static int uvcg_streaming_header_drop_link(struct config_item *src,
static void uvcg_streaming_header_drop_link(struct config_item *src,
					   struct config_item *target)
{
	struct mutex *su_mutex = &src->ci_group->cg_subsys->su_mutex;
@@ -786,7 +779,6 @@ static int uvcg_streaming_header_drop_link(struct config_item *src,
	struct uvcg_streaming_header *src_hdr;
	struct uvcg_format *target_fmt = NULL;
	struct uvcg_format_ptr *format_ptr, *tmp;
	int ret = -EINVAL;

	src_hdr = to_uvcg_streaming_header(src);
	mutex_lock(su_mutex); /* for navigating configfs hierarchy */
@@ -811,8 +803,6 @@ static int uvcg_streaming_header_drop_link(struct config_item *src,
out:
	mutex_unlock(&opts->lock);
	mutex_unlock(su_mutex);
	return ret;

}

static struct configfs_item_operations uvcg_streaming_header_item_ops = {
@@ -2051,7 +2041,7 @@ static int uvcg_streaming_class_allow_link(struct config_item *src,
	return ret;
}

static int uvcg_streaming_class_drop_link(struct config_item *src,
static void uvcg_streaming_class_drop_link(struct config_item *src,
					  struct config_item *target)
{
	struct config_item *streaming, *header;
@@ -2059,7 +2049,6 @@ static int uvcg_streaming_class_drop_link(struct config_item *src,
	struct mutex *su_mutex = &src->ci_group->cg_subsys->su_mutex;
	struct uvc_descriptor_header ***class_array;
	struct uvcg_streaming_header *target_hdr;
	int ret = -EINVAL;

	mutex_lock(su_mutex); /* for navigating configfs hierarchy */

@@ -2076,23 +2065,19 @@ static int uvcg_streaming_class_drop_link(struct config_item *src,
	if (!class_array || !*class_array)
		goto unlock;

	if (opts->refcnt) {
		ret = -EBUSY;
	if (opts->refcnt)
		goto unlock;
	}

	target_hdr = to_uvcg_streaming_header(target);
	--target_hdr->linked;
	kfree(**class_array);
	kfree(*class_array);
	*class_array = NULL;
	ret = 0;

unlock:
	mutex_unlock(&opts->lock);
out:
	mutex_unlock(su_mutex);
	return ret;
}

static struct configfs_item_operations uvcg_streaming_class_item_ops = {
Loading