TRACE_M("add_msg - kmalloc %x",(int)pMsg); 
TRACE_M("add_msg - kmalloc %p",pMsg); 
static void add_msg(struct r3964_client_info *pClient, int msg_id, int arg,             int error_code, struct r3964_block_header *pBlock){   struct r3964_message *pMsg;   unsigned long flags;      if(pClient->msg_count<R3964_MAX_MSG_COUNT-1)   {queue_the_message:      pMsg = kmalloc(sizeof(struct r3964_message), GFP_KERNEL);      TRACE_M("add_msg - kmalloc %x",(int)pMsg);      if(pMsg==NULL) {         return;      }      spin_lock_irqsave(&pClient->lock, flags);      pMsg->msg_id = msg_id;      pMsg->arg    = arg;      pMsg->error_code = error_code;      pMsg->block  = pBlock;      pMsg->next   = NULL;            if(pClient->last_msg==NULL)      {         pClient->first_msg=pClient->last_msg=pMsg;      }      else      {         pClient->last_msg->next = pMsg;         pClient->last_msg=pMsg;      }      pClient->msg_count++;      if(pBlock!=NULL)      {         pBlock->locks++;      }      spin_unlock_irqrestore(&pClient->lock, flags);   }   else   {      if((pClient->last_msg->msg_id == R3964_MSG_ACK)		 && (pClient->last_msg->error_code==R3964_OVERFLOW))      {         pClient->last_msg->arg++;		 TRACE_PE("add_msg - inc prev OVERFLOW-msg");      }      else      {         msg_id = R3964_MSG_ACK;         arg = 0;		 error_code = R3964_OVERFLOW;         pBlock = NULL;		 TRACE_PE("add_msg - queue OVERFLOW-msg");         goto queue_the_message;      }   }   /* Send SIGIO signal to client process: */   if(pClient->sig_flags & R3964_USE_SIGIO)   {      kill_proc(pClient->pid, SIGIO, 1);   }}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/87e0f3dbd3693bc4583474ab191cbdd5e3d9d0fa/n_r3964.c/clean/drivers/char/n_r3964.c