TRACE_M("enable_signals - kmalloc %x",(int)pClient); 
TRACE_M("enable_signals - kmalloc %p",pClient); 
static int enable_signals(struct r3964_info *pInfo, pid_t pid, int arg){   struct r3964_client_info *pClient;   struct r3964_client_info **ppClient;   struct r3964_message *pMsg;      if((arg & R3964_SIG_ALL)==0)   {      /* Remove client from client list */      for(ppClient=&pInfo->firstClient; *ppClient; ppClient=&(*ppClient)->next)      {         pClient = *ppClient;                  if(pClient->pid == pid)         {            TRACE_PS("removing client %d from client list", pid);            *ppClient = pClient->next;            while(pClient->msg_count)            {               pMsg=remove_msg(pInfo, pClient);               if(pMsg)               {                  kfree(pMsg);                  TRACE_M("enable_signals - msg kfree %x",(int)pMsg);               }            }            kfree(pClient);            TRACE_M("enable_signals - kfree %x",(int)pClient);            return 0;         }      }      return -EINVAL;   }   else   {      pClient=findClient(pInfo, pid);      if(pClient)      {         /* update signal options */         pClient->sig_flags=arg;      }       else       {         /* add client to client list */         pClient=kmalloc(sizeof(struct r3964_client_info), GFP_KERNEL);         TRACE_M("enable_signals - kmalloc %x",(int)pClient);         if(pClient==NULL)            return -ENOMEM;         TRACE_PS("add client %d to client list", pid);	 spin_lock_init(&pClient->lock);         pClient->sig_flags=arg;         pClient->pid = pid;         pClient->next=pInfo->firstClient;         pClient->first_msg = NULL;         pClient->last_msg = NULL;         pClient->next_block_to_read = NULL;         pClient->msg_count = 0;         pInfo->firstClient=pClient;      }   }   return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/87e0f3dbd3693bc4583474ab191cbdd5e3d9d0fa/n_r3964.c/clean/drivers/char/n_r3964.c