请教一个Linux内核桥的问题。

hustzxx 2011-11-03 02:47:33
我现在看的内核是2.6.34.8,在br_flood函数内看到如下的代码:

list_for_each_entry_rcu(p, &br->port_list, list) {
prev = maybe_deliver(prev, p, skb, __packet_hook);
if (IS_ERR(prev))
goto out;
}

maybe_deliver函数内又调用了should_deliver函数来判断是否应该转发。

我现在想到了一种情况,就是若在通过list_for_each_entry_rcu遍历br->port_list时,若p是收到此skb的端口,又恰好是br->port_list的第一个端口,是否有问题?

此时,maybe_deliver函数内的should_deliver判断不应该转发,导致maybe_deliver返回的prev还是NULL,IS_ERR判断出错,即直接goto out,但实际还有很多端口未遍历。

我想内核应该不会犯这么低级的错误,但始终没想明白。请各位大侠指导下!!谢谢!!
...全文
77 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧