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

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
...@@ -86,6 +86,7 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr, ...@@ -86,6 +86,7 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
struct stub_device *sdev = dev_get_drvdata(dev); struct stub_device *sdev = dev_get_drvdata(dev);
int sockfd = 0; int sockfd = 0;
struct socket *socket; struct socket *socket;
ssize_t err = -EINVAL;
if (!sdev) { if (!sdev) {
dev_err(dev, "sdev is null\n"); dev_err(dev, "sdev is null\n");
...@@ -101,15 +102,13 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr, ...@@ -101,15 +102,13 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
if (sdev->ud.status != SDEV_ST_AVAILABLE) { if (sdev->ud.status != SDEV_ST_AVAILABLE) {
dev_err(dev, "not ready\n"); dev_err(dev, "not ready\n");
spin_unlock_irq(&sdev->ud.lock); goto err;
return -EINVAL;
} }
socket = sockfd_to_socket(sockfd); socket = sockfd_to_socket(sockfd);
if (!socket) { if (!socket)
spin_unlock_irq(&sdev->ud.lock); goto err;
return -EINVAL;
}
sdev->ud.tcp_socket = socket; sdev->ud.tcp_socket = socket;
spin_unlock_irq(&sdev->ud.lock); spin_unlock_irq(&sdev->ud.lock);
...@@ -127,16 +126,19 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr, ...@@ -127,16 +126,19 @@ static ssize_t store_sockfd(struct device *dev, struct device_attribute *attr,
dev_info(dev, "stub down\n"); dev_info(dev, "stub down\n");
spin_lock_irq(&sdev->ud.lock); spin_lock_irq(&sdev->ud.lock);
if (sdev->ud.status != SDEV_ST_USED) { if (sdev->ud.status != SDEV_ST_USED)
spin_unlock_irq(&sdev->ud.lock); goto err;
return -EINVAL;
}
spin_unlock_irq(&sdev->ud.lock); spin_unlock_irq(&sdev->ud.lock);
usbip_event_add(&sdev->ud, SDEV_EVENT_DOWN); usbip_event_add(&sdev->ud, SDEV_EVENT_DOWN);
} }
return count; return count;
err:
spin_unlock_irq(&sdev->ud.lock);
return err;
} }
static DEVICE_ATTR(usbip_sockfd, S_IWUSR, NULL, store_sockfd); static DEVICE_ATTR(usbip_sockfd, S_IWUSR, NULL, store_sockfd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment