From 4d4b92638563232780496cc857cb15ef0bccceae Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Thu, 27 May 2010 11:21:11 +0900 Subject: [PATCH] --- yaml --- r: 206085 b: refs/heads/master c: f6735590e9f441762ab5afeff64ded99e5b19a68 h: refs/heads/master i: 206083: c6e320cd0f3630feac4b23ec7ba023a1d495a003 v: v3 --- [refs] | 2 +- trunk/drivers/pci/pcie/aer/aerdrv_core.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index a626bab573df..659e08d2ec3c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 73cd3b43f08cc9a9bcb168994b8e9ebd983ff573 +refs/heads/master: f6735590e9f441762ab5afeff64ded99e5b19a68 diff --git a/trunk/drivers/pci/pcie/aer/aerdrv_core.c b/trunk/drivers/pci/pcie/aer/aerdrv_core.c index 8af4f619bba2..fc0b5a93e1de 100644 --- a/trunk/drivers/pci/pcie/aer/aerdrv_core.c +++ b/trunk/drivers/pci/pcie/aer/aerdrv_core.c @@ -727,20 +727,21 @@ static void aer_isr_one_error(struct pcie_device *p_device, static int get_e_source(struct aer_rpc *rpc, struct aer_err_source *e_src) { unsigned long flags; - int ret = 0; /* Lock access to Root error producer/consumer index */ spin_lock_irqsave(&rpc->e_lock, flags); - if (rpc->prod_idx != rpc->cons_idx) { - *e_src = rpc->e_sources[rpc->cons_idx]; - rpc->cons_idx++; - if (rpc->cons_idx == AER_ERROR_SOURCES_MAX) - rpc->cons_idx = 0; - ret = 1; + if (rpc->prod_idx == rpc->cons_idx) { + spin_unlock_irqrestore(&rpc->e_lock, flags); + return 0; } + + *e_src = rpc->e_sources[rpc->cons_idx]; + rpc->cons_idx++; + if (rpc->cons_idx == AER_ERROR_SOURCES_MAX) + rpc->cons_idx = 0; spin_unlock_irqrestore(&rpc->e_lock, flags); - return ret; + return 1; } /**