-1
我很困惑!copy_to/from_user和malloc在用户空间
我有发送/经由ioctl
从chardev接收缓冲区/简单chardev和用户空间的应用。
当我通过malloc
(在堆上)分配缓冲区(在用户空间中)时,我有时在用户空间应用程序free()
或内核恐慌中出现分段错误。 而且每次都是其中之一。
但,如果我取代由alloca()
malloc()
(在栈上分配的buf)一切工作正常,每次。
另外我试过memset(buf, 0x42, buf_len)
之后调用malloc
(为了避免编译优化或懒惰分配/拷贝写入) 并且它没有帮助。
能否请您解释一下这样的行为? malloc
有什么问题/我做错了什么?
确实需要查看代码来识别问题。 –
可能是缓冲区溢出和未定义的行为。 –
另外两个猜测:你的驱动程序在用户空间释放后尝试访问缓冲区(如果你使用正确的函数,不应该引起内核恐慌);您的驱动程序在另一个进程的上下文中尝试写入用户空间。 – yeputons