+ -
当前位置:首页 → 问答吧 → ioctl中copy_from_user导致系统crash

ioctl中copy_from_user导致系统crash

时间:2011-10-17

来源:互联网

我在写一个驱动遇到这样的问题:

ioctl()
{
....
switch(cmd)
{
.....
 case DRV_VLAN_INIT_VLANTABLE_RAM_DATA:
  {
  vlanTable_t vlanT;
  if (copy_from_user(&vlanT,(void*)param1,sizeof(vlanT)))
  {
  _ioctl_dbg(dev, "DRV_VLAN_INIT_VLANTABLE_RAM_DATA copy_from_user param1");
  status = -EFAULT;
  }
  ....
  }
  break;
  ....
}
}
  在这里,我的vlanT结构大小为0x97c时,系统运行正常。但是修改vlanT的结构后,大小为0xb10时,运行到copy_from_user时就会系统崩溃。
  我也尝试过使用指针申请内存 vlan = kmalloc(sizeof(vlanT), GFP_KERNEL/GFP_ATOMIC),但还是会系统崩溃。
按道理来说我的系统内存足够大的,不可能说多用几K就导致系统崩溃。
  请高手指点!!!!!!!
   

作者: z31719   发布时间: 2011-10-17

在线等啊,盼高手出现

作者: z31719   发布时间: 2011-10-17