Chinaunix

标题: 内核栈会溢出吗? [打印本页]

作者: xiaojsj    时间: 2013-10-11 17:50
标题: 内核栈会溢出吗?
譬如现在内核驱动中有如下一个函数:
#define MAX_NVRAMBUF_SIZE     4096        /* max nvram buf size */
static int
dhdsdio_download_config(struct dhd_bus *bus)
{
        int bcmerror = -1;
        uint len, len_val;
        void * image = NULL;
        char * memblock = NULL;
        char *bufp, pick[MAX_NVRAMBUF_SIZE];
        char *pconf_path;
        bool conf_file_exists;
... ...
}
即在函数中开辟一个很大的数组pick[MAX_NVRAMBUF_SIZE],这个会造成内核栈溢出吗?我印象中,内核栈的原始大小是8KB,如果栈空间不够用,内核会自动向下扩展栈的大小吗?

恳请各位大侠各抒己见啊!!!!
作者: 瀚海书香    时间: 2013-10-12 08:06
回复 1# xiaojsj
即在函数中开辟一个很大的数组pick[MAX_NVRAMBUF_SIZE],这个会造成内核栈溢出吗?我印象中,内核栈的原始大小是8KB,如果栈空间不够用,内核会自动向下扩展栈的大小吗?

会溢出,覆盖栈空间之外的数据结构
作者: humjb_1983    时间: 2013-10-12 08:39
印象中,内核栈大小为8k或4k(可配),超过应该会溢出的。
作者: xs3c    时间: 2013-10-12 09:40
回复 1# xiaojsj
肯定会,要用用大内存用Kmalloc申请。


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2