linux - 使用 netif_rx() 时出现内核错误

标签 linux kernel driver ethernet

我目前正在德州仪器 Keystone II armv7l 上为 Linux 3.10.61 开发以太网驱动程序。

我现在想接收 sk_buff 到用户空间。 我已经实现了自己的轮询模式(无中断)并且我没有使用 NAPI,所以 netif_receive_skb()。 我的驱动程序能够接收数据,但是当我尝试使用 netif_rx() 将我的 sk_buff 发送到上层时,内核崩溃而没有时间显示整个内核 oops。

[ 624.203739] 无法处理虚拟地址 00000078 处的内核 NULL 指针取消引用 [ 624.211818] pgd = c0003000 2014 年 10 月 2 日 11:3[ 624.214514] [00000078] *pgd=800008000040035:04 147 [ 624., *pmd=00000000 *******崩溃********

有人知道为什么会这样吗? 这会不会是因为我的 sk_buff 没有填好?

谢谢你的帮助, 苏尔

最佳答案

你是在非软中断上下文中调用 netif_rx 吗?也许您应该改用 netif_rx_ni? 您可以引用以下链接:

https://lab.nexedi.cn/kirr/linux/commit/324e786ee39c70ffbdc280c34b7d2b6da5c87879?view=parallel

关于linux - 使用 netif_rx() 时出现内核错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31670005/

相关文章:

linux - 使 *.mp3 的开始和结束段没有声音的最佳方法?

c - 用C有效迁移一个linux进程

windows - 学习编写 Windows 驱动程序

python - 在 fedora 上运行 ansible 返回下面的错误,这迫使我自己安装 python

c - 在 LKM 中使用 ELF 部分

linux - Linux 内核 3.4.103 上的 iptables --to-port

linux 64位内存空间大小?

linux - 带有来自调制解调器的 PCM 接口(interface)的 Alsa

linux - Linux 驱动程序上下文中的微秒延迟和自旋锁

java - 是否可以为接口(interface)类型创建对象