TRACE_M("remove_from_rx_queue - kfree %x",(int)pHeader); 
TRACE_M("remove_from_rx_queue - kfree %p",pHeader); 
static void remove_from_rx_queue(struct r3964_info *pInfo,                 struct r3964_block_header *pHeader){   unsigned long flags;   struct r3964_block_header *pFind;      if(pHeader==NULL)      return;   TRACE_Q("remove_from_rx_queue: rx_first = %x, rx_last = %x, count = %d",          (int)pInfo->rx_first, (int)pInfo->rx_last, pInfo->blocks_in_rx_queue );   TRACE_Q("remove_from_rx_queue: %x, length %d",          (int)pHeader, (int)pHeader->length );   spin_lock_irqsave(&pInfo->lock, flags);   if(pInfo->rx_first == pHeader)   {      /* Remove the first block in the linked list: */      pInfo->rx_first = pHeader->next;            if(pInfo->rx_first==NULL)      {         pInfo->rx_last = NULL;      }      pInfo->blocks_in_rx_queue--;   }   else    {      /* Find block to remove: */      for(pFind=pInfo->rx_first; pFind; pFind=pFind->next)      {         if(pFind->next == pHeader)          {            /* Got it. */            pFind->next = pHeader->next;            pInfo->blocks_in_rx_queue--;            if(pFind->next==NULL)            {               /* Oh, removed the last one! */               pInfo->rx_last = pFind;            }            break;         }      }   }   spin_unlock_irqrestore(&pInfo->lock, flags);   kfree(pHeader);   TRACE_M("remove_from_rx_queue - kfree %x",(int)pHeader);   TRACE_Q("remove_from_rx_queue: rx_first = %x, rx_last = %x, count = %d",          (int)pInfo->rx_first, (int)pInfo->rx_last, pInfo->blocks_in_rx_queue );}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/87e0f3dbd3693bc4583474ab191cbdd5e3d9d0fa/n_r3964.c/clean/drivers/char/n_r3964.c