我最近在做linux内核模块开发,想在路由器上加载内核模块获取HTTP POST请求的Content-Length值并将它转为整型,但是使用 kstrtoint函数转换失败,关键部分代码如下:
data = (unsigned char *)tcp + (unsigned char)(tcp->doff) * 4;
if(strstr(data,"Host: 192.168.0.102:8081")!=NULL)
{
POST=strstr(data,"POST /");
char ContentLength[50];
int len;
char tmp[50];
int a;
if(POST!=NULL){
findstr(POST,ContentLength,"Content-Length: ","Origin:");
printk("******");
sprintf(tmp,"%s",ContentLength);
printk("%s",tmp);
a=kstrtoint(tmp,10,&len);
printk("%d",a);
printk("%d",len);
printk("##############");
}
}
其中findstr函数为自己编写的截取中间字符串的函数,确定是没有问题的,printk("%s",tmp)打印信息也表明是正确截取到了Content-Length:和Origin:之间的数值的,但是使用kstrtoint转换为整型就出错,内核printk信息如下图:

有哪位大佬帮忙解答下困惑啊,不胜感激!!!!
https://blog.csdn.net/ambercctv/article/details/53100723?utm_source=blogxgwz4