e1000e: cleanup: use goto for common work needed by multiple exit points
authorBruce Allan <bruce.w.allan@intel.com>
Wed, 8 Feb 2012 02:54:42 +0000 (02:54 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 13 Feb 2012 20:28:10 +0000 (12:28 -0800)
There are two exit points of e1000e_write_nvm_spi() which require the
nvm->ops.release() function pointer called just before exiting.
Consolidate the two duplicate pieces of common work with a goto.  With
this change, the value ret_val will need to be returned instead of 0.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/e1000e/nvm.c

index f6fb7a768ba58b08739742224b5c0cfb85aa7de2..1b50db59fb0dc68aae8498f6ab1ae717d7668971 100644 (file)
@@ -382,10 +382,8 @@ s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
                u8 write_opcode = NVM_WRITE_OPCODE_SPI;
 
                ret_val = e1000_ready_nvm_eeprom(hw);
-               if (ret_val) {
-                       nvm->ops.release(hw);
-                       return ret_val;
-               }
+               if (ret_val)
+                       goto release;
 
                e1000_standby_nvm(hw);
 
@@ -422,8 +420,10 @@ s32 e1000e_write_nvm_spi(struct e1000_hw *hw, u16 offset, u16 words, u16 *data)
        }
 
        usleep_range(10000, 20000);
+release:
        nvm->ops.release(hw);
-       return 0;
+
+       return ret_val;
 }
 
 /**