[usbip-devel] [PATCH 07/15] staging: usbip: simplified errorhandling
Status: Alpha
Brought to you by:
hirofuchi
|
From: Stefan R. <ke4...@ci...> - 2013-04-04 14:09:11
|
From: Kurt Kanzenbach <ly8...@ci...>
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: Kurt Kanzenbach <ly8...@ci...>
Signed-off-by: Stefan Reif <ke4...@ci...>
---
drivers/staging/usbip/stub_dev.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/staging/usbip/stub_dev.c b/drivers/staging/usbip/stub_dev.c
index 471cd2a..c75ae63 100644
--- a/drivers/staging/usbip/stub_dev.c
+++ b/drivers/staging/usbip/stub_dev.c
@@ -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);
--
1.8.1
|