[ipxe-devel] [PATCH 1/1] [intel] Add PCI device IDs for Intel I218-LM and I218-V

Michael Brown mcb30 at ipxe.org
Thu Jan 28 13:13:51 UTC 2016

On 28/01/16 13:06, Thomas Miletich wrote:
> @Michael: somewhat OT, but there seems to be an unreachable call
>> intel_destroy_ring ( intel, &intel->rx );
> in intel_open()

Yes, that's the error recovery code to undo the effects of 
intel_create_ring(...->rx).  My usual pattern for error handling is:

   if ( ( rc = try_thing_one() ) != 0 )
      goto err_thing_one;


   if ( ( rc = try_thing_two() ) != 0 )
      goto err_thing_two;


   return 0;






   return rc

This means that the error recovery code is always present when the code 
is first written.  In future, when try_thing_three() is added to the 
function, the developer doesn't need to remember to add the logically 
unrelated undo_thing_two().

The error recovery code for the latest possible error in the function 
will always be unreachable with this design pattern.


More information about the ipxe-devel mailing list