<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3243" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=219105713-24032009><FONT face=Arial color=#0000ff 
size=2>Applied with some changes in 2040, thank you.</FONT></SPAN></DIV><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> ofw-bounces@lists.openfabrics.org 
  [mailto:ofw-bounces@lists.openfabrics.org] <B>On Behalf Of </B>Tzachi 
  Dar<BR><B>Sent:</B> Sunday, March 15, 2009 12:31 PM<BR><B>To:</B> 
  ofw@lists.openfabrics.org<BR><B>Subject:</B> [ofw] PATCH: Free spinlock in the 
  case of an error.<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV><FONT face=Arial size=2>Index: 
  Q:/projinf2/trunk/hw/mlx4/kernel/bus/net/catas.c<BR>===================================================================<BR>--- 
  Q:/projinf2/trunk/hw/mlx4/kernel/bus/net/catas.c (revision 4101)<BR>+++ 
  Q:/projinf2/trunk/hw/mlx4/kernel/bus/net/catas.c (working copy)<BR>@@ 
  -345,6 +345,7 @@<BR> {<BR>  struct ib_device 
  *ibdev;<BR>  struct mlx4_dev *dev;<BR>+ int err = 
  0;<BR> <BR>  unsigned long flags;<BR> <BR>@@ -370,17 
  +371,19 @@<BR>   // to allow for end of operations that are in 
  progress<BR>   reset_work = IoAllocateWorkItem( 
  dev->pdev->p_self_do );<BR>   if (!reset_work) 
  {<BR>+   spin_unlock_irqrestore(&ibdev->event_handler_lock, 
  flags);<BR>    mlx4_err(dev, "mlx4_reset_request 
  IoAllocateWorkItem failed, reset will not be 
  propagated\n");<BR>-   return 
  -EFAULT;<BR>+   err = -EFAULT;<BR>+   goto 
  err_workitem;<BR>   }<BR>   event_handler->rsrv_ptr 
  = reset_work;<BR>   IoQueueWorkItem( reset_work, card_reset_wi, 
  DelayedWorkQueue, event_handler 
  );<BR>  }<BR>-<BR>+err_workitem:<BR>  spin_unlock_irqrestore(&ibdev->event_handler_lock, 
  flags);<BR> <BR> <BR>- return 0;<BR>+ return 
  err;<BR> }<BR> <BR> int mlx4_reset_cb_register( struct 
  ib_event_handler *event_handler )<BR></FONT></DIV></BLOCKQUOTE></BODY></HTML>