[PATCH 2/2] usb: host: u132-hcd: Drop if with an always true condition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A platform device's .remove() callback is only ever called after
.probe() successfully completed. After such a successful call,
platform_get_drvdata() doesn't return NULL. Simplify accordingly.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx>
---
 drivers/usb/host/u132-hcd.c | 66 +++++++++++++++++++------------------
 1 file changed, 34 insertions(+), 32 deletions(-)

diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c
index f5433993c76e..45244c791bcb 100644
--- a/drivers/usb/host/u132-hcd.c
+++ b/drivers/usb/host/u132-hcd.c
@@ -2977,39 +2977,36 @@ static const struct hc_driver u132_hc_driver = {
 static int u132_remove(struct platform_device *pdev)
 {
 	struct usb_hcd *hcd = platform_get_drvdata(pdev);
-	if (hcd) {
-		struct u132 *u132 = hcd_to_u132(hcd);
-		if (u132->going++ > 1) {
-			dev_err(&u132->platform_dev->dev,
-				"already being removed\n");
-			return -ENODEV;
-		} else {
-			int rings = MAX_U132_RINGS;
-			int endps = MAX_U132_ENDPS;
-			dev_err(&u132->platform_dev->dev,
-				"removing device u132.%d\n",
-				u132->sequence_num);
-			msleep(100);
-			mutex_lock(&u132->sw_lock);
-			u132_monitor_cancel_work(u132);
-			while (rings-- > 0) {
-				struct u132_ring *ring = &u132->ring[rings];
-				u132_ring_cancel_work(u132, ring);
-			}
-			while (endps-- > 0) {
-				struct u132_endp *endp = u132->endp[endps];
-				if (endp)
-					u132_endp_cancel_work(u132, endp);
-			}
-			u132->going += 1;
-			printk(KERN_INFO "removing device u132.%d\n",
-				u132->sequence_num);
-			mutex_unlock(&u132->sw_lock);
-			usb_remove_hcd(hcd);
-			u132_u132_put_kref(u132);
-			return 0;
-		}
+	struct u132 *u132 = hcd_to_u132(hcd);
+
+	if (u132->going++ > 1) {
+		dev_err(&u132->platform_dev->dev,
+			"already being removed\n");
+		return -ENODEV;
 	} else {
+		int rings = MAX_U132_RINGS;
+		int endps = MAX_U132_ENDPS;
+		dev_err(&u132->platform_dev->dev,
+			"removing device u132.%d\n",
+			u132->sequence_num);
+		msleep(100);
+		mutex_lock(&u132->sw_lock);
+		u132_monitor_cancel_work(u132);
+		while (rings-- > 0) {
+			struct u132_ring *ring = &u132->ring[rings];
+			u132_ring_cancel_work(u132, ring);
+		}
+		while (endps-- > 0) {
+			struct u132_endp *endp = u132->endp[endps];
+			if (endp)
+				u132_endp_cancel_work(u132, endp);
+		}
+		u132->going += 1;
+		printk(KERN_INFO "removing device u132.%d\n",
+			u132->sequence_num);
+		mutex_unlock(&u132->sw_lock);
+		usb_remove_hcd(hcd);
+		u132_u132_put_kref(u132);
 		return 0;
 	}
 }
@@ -3092,6 +3089,11 @@ static int u132_probe(struct platform_device *pdev)
 	if (retval)
 		return retval;
 
+	/*
+	 * Note that after a successful call of usb_create_hcd(),
+	 * dev_set_drvdata() was called such that platform_get_drvdata(pdev)
+	 * returns hcd later on.
+	 */
 	hcd = usb_create_hcd(&u132_hc_driver, &pdev->dev, dev_name(&pdev->dev));
 	if (!hcd) {
 		printk(KERN_ERR "failed to create the usb hcd struct for U132\n");
-- 
2.39.2




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux