Commit 
7fa6f34 "AER revised" erroneously inserted an error-flow
in which a semaphore is released even though the attempt to take it
has failed.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Yuval Mintz <yuvalmin@broadcom.com>
Signed-off-by: Ariel Elior <ariele@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
                        /* If Path is marked by EEH, ignore unload status */
                        aer = !!(bnx2x_prev_path_get_entry(bp) &&
                                 bnx2x_prev_path_get_entry(bp)->aer);
+                       up(&bnx2x_prev_sem);
                }
-               up(&bnx2x_prev_sem);
 
                if (fw == FW_MSG_CODE_DRV_UNLOAD_COMMON || aer) {
                        rc = bnx2x_prev_unload_common(bp);