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