[PATCH v4 2/2] Staging: bcm: InterfaceMisc.c: Outsourced doubled error checking

Matthias Beyer mail at beyermatthias.de
Wed Jun 11 08:46:11 UTC 2014


Signed-off-by: Matthias Beyer <mail at beyermatthias.de>
---
 drivers/staging/bcm/InterfaceMisc.c | 69 +++++++++++++++++--------------------
 1 file changed, 31 insertions(+), 38 deletions(-)

diff --git a/drivers/staging/bcm/InterfaceMisc.c b/drivers/staging/bcm/InterfaceMisc.c
index fff7d68..a0f159e 100644
--- a/drivers/staging/bcm/InterfaceMisc.c
+++ b/drivers/staging/bcm/InterfaceMisc.c
@@ -1,36 +1,46 @@
 #include "headers.h"
 
-int InterfaceRDM(struct bcm_interface_adapter *psIntfAdapter,
-		unsigned int addr,
-		void *buff,
-		int len)
+static int adapter_err_occurred(const struct bcm_interface_adapter *ad)
 {
-	int bytes;
-
-	if (!psIntfAdapter)
-		return -EINVAL;
-
-	if (psIntfAdapter->psAdapter->device_removed == TRUE) {
-		BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_PRINTK, 0, 0,
+	if (ad->psAdapter->device_removed == TRUE) {
+		BCM_DEBUG_PRINT(ad->psAdapter, DBG_TYPE_PRINTK, 0, 0,
 				"Device got removed");
 		return -ENODEV;
 	}
 
-	if ((psIntfAdapter->psAdapter->StopAllXaction == TRUE) &&
-	    (psIntfAdapter->psAdapter->chip_id >= T3LPB)) {
-		BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, RDM,
+	if ((ad->psAdapter->StopAllXaction == TRUE) &&
+	    (ad->psAdapter->chip_id >= T3LPB)) {
+		BCM_DEBUG_PRINT(ad->psAdapter, DBG_TYPE_OTHERS, RDM,
 				DBG_LVL_ALL,
 				"Currently Xaction is not allowed on the bus");
 		return -EACCES;
 	}
 
-	if (psIntfAdapter->bSuspended == TRUE ||
-	    psIntfAdapter->bPreparingForBusSuspend == TRUE) {
-		BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, RDM,
+	if (ad->bSuspended == TRUE || ad->bPreparingForBusSuspend == TRUE) {
+		BCM_DEBUG_PRINT(ad->psAdapter, DBG_TYPE_OTHERS, RDM,
 				DBG_LVL_ALL,
 				"Bus is in suspended states hence RDM not allowed..");
 		return -EACCES;
 	}
+
+	return 0;
+}
+
+int InterfaceRDM(struct bcm_interface_adapter *psIntfAdapter,
+		unsigned int addr,
+		void *buff,
+		int len)
+{
+	int bytes;
+	int err = 0;
+
+	if (!psIntfAdapter)
+		return -EINVAL;
+
+	err = adapter_err_occurred(psIntfAdapter);
+	if (err)
+		return err;
+
 	psIntfAdapter->psAdapter->DeviceAccess = TRUE;
 
 	bytes = usb_control_msg(psIntfAdapter->udev,
@@ -63,31 +73,14 @@ int InterfaceWRM(struct bcm_interface_adapter *psIntfAdapter,
 		int len)
 {
 	int retval = 0;
+	int err = 0;
 
 	if (!psIntfAdapter)
 		return -EINVAL;
 
-	if (psIntfAdapter->psAdapter->device_removed == TRUE) {
-		BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_PRINTK, 0, 0,
-				"Device got removed");
-		return -ENODEV;
-	}
-
-	if ((psIntfAdapter->psAdapter->StopAllXaction == TRUE) &&
-	    (psIntfAdapter->psAdapter->chip_id >= T3LPB)) {
-		BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, WRM,
-				DBG_LVL_ALL,
-				"Currently Xaction is not allowed on the bus...");
-		return -EACCES;
-	}
-
-	if (psIntfAdapter->bSuspended == TRUE ||
-	    psIntfAdapter->bPreparingForBusSuspend == TRUE) {
-		BCM_DEBUG_PRINT(psIntfAdapter->psAdapter, DBG_TYPE_OTHERS, WRM,
-				DBG_LVL_ALL,
-				"Bus is in suspended states hence RDM not allowed..");
-		return -EACCES;
-	}
+	err = adapter_err_occurred(psIntfAdapter);
+	if (err)
+		return err;
 
 	psIntfAdapter->psAdapter->DeviceAccess = TRUE;
 
-- 
2.0.0



More information about the devel mailing list