Linux下碰到一个关于ioctl缓冲区的问题
我创建了一个字符设备之后,hook内核的ioctl函数,在用户空间调用ioctl发送指令,为啥不能发送超过1024字节的buffer啊?是不是还需要设置什么?...
我创建了一个字符设备之后,hook内核的ioctl函数,在用户空间调用ioctl发送指令,为啥不能发送超过1024字节的buffer啊?是不是还需要设置什么?
展开
3个回答
展开全部
是不是buffer的长度系统默认是接受100个包的大小,你可以改改大小试试
追问
不是包的个数问题,是我用ioctl发送的缓冲区大小不能超过1024个字节。例如:
char buff[1030];
ioctl(fd, cmd, buff)
在此情况下,ioctl就返回错误,如果将buff大小改为<=1024的话,此函数就能调用成功。
如果要设置此buff的大小该如何设置啊?
追答
那就是malloc的空间大小比你设置的大小小了 所以不能超过 超出后造成溢出了...建议你看看内存空间管理吧 我也不太懂,继续学习!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是你自己控制的阿...你的字符设备里面iotcl怎么写的...
iotcl里面已经实现了对若干个命令字的处理,剩下的自定义命令字你需要自己分别处理...
我不知道你从用户空间拷贝数据到内核用的是copy_to_user还是别的...是不是你自己在内核中申请的用来存数据的缓冲区大小就小于1024了..
具体原因要看你到底怎么写的ioctl函数...你说的hook又是怎么回事.. 我没看明白你意思..
实在说不清,你就把源码贴出来一部分..
iotcl里面已经实现了对若干个命令字的处理,剩下的自定义命令字你需要自己分别处理...
我不知道你从用户空间拷贝数据到内核用的是copy_to_user还是别的...是不是你自己在内核中申请的用来存数据的缓冲区大小就小于1024了..
具体原因要看你到底怎么写的ioctl函数...你说的hook又是怎么回事.. 我没看明白你意思..
实在说不清,你就把源码贴出来一部分..
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哦,大哥,我搞不懂这个,你去那些专业的BBS问吧http://www.linuxsir.org这个不错
追问
老大,你让我无语了,我好急啊,在线等呢
追答
我知道你是在线等啊,但是我才玩了没几天就停下了啦,你去那里问,里面高手多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询