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

Commit 31398f63 authored by Kurt Kanzenbach's avatar Kurt Kanzenbach Committed by Greg Kroah-Hartman
Browse files

staging: usbip: simplified errorhandling



In each errorcase spin_unlock_irq is called and -EINVAL is returned.
To simplify that I created a label called "err" doing that.
On Success count will be returned.

Signed-off-by: default avatarKurt Kanzenbach <ly80toro@cip.cs.fau.de>
Signed-off-by: default avatarStefan Reif <ke42caxa@cip.cs.fau.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ca9fb17e
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
	struct stub_device *sdev = dev_get_drvdata(dev);
	int sockfd = 0;
	struct socket *socket;
	ssize_t err = -EINVAL;

	if (!sdev) {
		dev_err(dev, "sdev is null\n");
@@ -101,15 +102,13 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,

		if (sdev->ud.status != SDEV_ST_AVAILABLE) {
			dev_err(dev, "not ready\n");
			spin_unlock_irq(&sdev->ud.lock);
			return -EINVAL;
			goto err;
		}

		socket = sockfd_to_socket(sockfd);
		if (!socket) {
			spin_unlock_irq(&sdev->ud.lock);
			return -EINVAL;
		}
		if (!socket)
			goto err;

		sdev->ud.tcp_socket = socket;

		spin_unlock_irq(&sdev->ud.lock);
@@ -127,16 +126,19 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
		dev_info(dev, "stub down\n");

		spin_lock_irq(&sdev->ud.lock);
		if (sdev->ud.status != SDEV_ST_USED) {
			spin_unlock_irq(&sdev->ud.lock);
			return -EINVAL;
		}
		if (sdev->ud.status != SDEV_ST_USED)
			goto err;

		spin_unlock_irq(&sdev->ud.lock);

		usbip_event_add(&sdev->ud, SDEV_EVENT_DOWN);
	}

	return count;

err:
	spin_unlock_irq(&sdev->ud.lock);
	return err;
}
static DEVICE_ATTR(usbip_sockfd, S_IWUSR, NULL, store_sockfd);