[PATCH 15/22] aerdrv: introduce get_err_handler()

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

 



Get rid of some ugly multi-lined-if-statement.

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@xxxxxxxxxxxxxx>
---
 drivers/pci/pcie/aer/aerdrv_core.c |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/drivers/pci/pcie/aer/aerdrv_core.c b/drivers/pci/pcie/aer/aerdrv_core.c
index df735cd..4bd4b4f 100644
--- a/drivers/pci/pcie/aer/aerdrv_core.c
+++ b/drivers/pci/pcie/aer/aerdrv_core.c
@@ -248,6 +248,13 @@ static int find_source_device(struct pci_dev *parent,
 	return 1;
 }
 
+static struct pci_error_handlers *get_err_handler(struct pci_dev *dev)
+{
+	if (!dev || !dev->driver)
+		return NULL;
+	return dev->driver->err_handler;
+}
+
 static int report_error_detected(struct pci_dev *dev, void *data)
 {
 	pci_ers_result_t vote;
@@ -257,9 +264,8 @@ static int report_error_detected(struct pci_dev *dev, void *data)
 
 	dev->error_state = result_data->state;
 
-	if (!dev->driver ||
-		!dev->driver->err_handler ||
-		!dev->driver->err_handler->error_detected) {
+	err_handler = get_err_handler(dev);
+	if (!err_handler || !err_handler->error_detected) {
 		if (result_data->state == pci_channel_io_frozen &&
 			!(dev->hdr_type & PCI_HEADER_TYPE_BRIDGE)) {
 			/*
@@ -276,9 +282,9 @@ static int report_error_detected(struct pci_dev *dev, void *data)
 		return 0;
 	}
 
-	err_handler = dev->driver->err_handler;
 	vote = err_handler->error_detected(dev, result_data->state);
 	result_data->result = merge_result(result_data->result, vote);
+
 	return 0;
 }
 
@@ -289,14 +295,13 @@ static int report_mmio_enabled(struct pci_dev *dev, void *data)
 	struct aer_broadcast_data *result_data;
 	result_data = (struct aer_broadcast_data *) data;
 
-	if (!dev->driver ||
-		!dev->driver->err_handler ||
-		!dev->driver->err_handler->mmio_enabled)
+	err_handler = get_err_handler(dev);
+	if (!err_handler || !err_handler->mmio_enabled)
 		return 0;
 
-	err_handler = dev->driver->err_handler;
 	vote = err_handler->mmio_enabled(dev);
 	result_data->result = merge_result(result_data->result, vote);
+
 	return 0;
 }
 
@@ -307,14 +312,13 @@ static int report_slot_reset(struct pci_dev *dev, void *data)
 	struct aer_broadcast_data *result_data;
 	result_data = (struct aer_broadcast_data *) data;
 
-	if (!dev->driver ||
-		!dev->driver->err_handler ||
-		!dev->driver->err_handler->slot_reset)
+	err_handler = get_err_handler(dev);
+	if (!err_handler || !err_handler->slot_reset)
 		return 0;
 
-	err_handler = dev->driver->err_handler;
 	vote = err_handler->slot_reset(dev);
 	result_data->result = merge_result(result_data->result, vote);
+
 	return 0;
 }
 
@@ -324,13 +328,12 @@ static int report_resume(struct pci_dev *dev, void *data)
 
 	dev->error_state = pci_channel_io_normal;
 
-	if (!dev->driver ||
-		!dev->driver->err_handler ||
-		!dev->driver->err_handler->resume)
+	err_handler = get_err_handler(dev);
+	if (!err_handler || !err_handler->resume)
 		return 0;
 
-	err_handler = dev->driver->err_handler;
 	err_handler->resume(dev);
+
 	return 0;
 }
 
-- 
1.7.0.4


--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux