TRACE_M("r3964_write - kmalloc %x",(int)new_data); 
TRACE_M("r3964_write - kmalloc %p",new_data); 
static ssize_t r3964_write(struct tty_struct * tty, struct file * file,			   const unsigned char *data, size_t count){   struct r3964_info *pInfo=(struct r3964_info*)tty->disc_data;   struct r3964_block_header *pHeader;   struct r3964_client_info *pClient;   unsigned char *new_data;   int pid;      TRACE_L("write request, %d characters", count);/*  * Verify the pointers  */   if(!pInfo)      return -EIO;/* * Ensure that the caller does not wish to send too much. */   if (count > R3964_MTU)    {      if (pInfo->flags & R3964_DEBUG)      {         TRACE_L (KERN_WARNING                 "r3964_write: truncating user packet "                 "from %u to mtu %d", count, R3964_MTU);      }      count = R3964_MTU;   }/* * Allocate a buffer for the data and copy it from the buffer with header prepended */   new_data = kmalloc (count+sizeof(struct r3964_block_header), GFP_KERNEL);   TRACE_M("r3964_write - kmalloc %x",(int)new_data);   if (new_data == NULL) {      if (pInfo->flags & R3964_DEBUG)      {         printk (KERN_ERR               "r3964_write: no memory\n");      }      return -ENOSPC;   }      pHeader = (struct r3964_block_header *)new_data;   pHeader->data = new_data + sizeof(struct r3964_block_header);   pHeader->length = count;   pHeader->locks = 0;   pHeader->owner = NULL;      pid=current->pid;      pClient=findClient(pInfo, pid);   if(pClient)   {      pHeader->owner = pClient;   }   memcpy(pHeader->data, data, count); /* We already verified this */   if(pInfo->flags & R3964_DEBUG)   {      dump_block(pHeader->data, count);   }/* * Add buffer to transmit-queue: */   add_tx_queue(pInfo, pHeader);   trigger_transmit(pInfo);      return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/87e0f3dbd3693bc4583474ab191cbdd5e3d9d0fa/n_r3964.c/clean/drivers/char/n_r3964.c