免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2256 | 回复: 6
打印 上一主题 下一主题

[网络子系统] open-vswitch的 gre vport导致内核崩溃 [复制链接]

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-20 16:53 |只看该作者 |倒序浏览
如果第一次使用 gre vport,open-vswitch注册了一个 gre_cisco_protocol,但是没有提供 err_handler。

见 gre_init()@net/openvswitch/vport-gre.c

static struct gre_cisco_protocol gre_protocol = {
        .handler        = gre_rcv,
        .priority       = 1,
};

static int gre_init(void)
{
        int err;

        gre_ports++;
        if (gre_ports > 1)
                return 0;

        err = gre_cisco_register(&gre_protocol);
        if (err)
                pr_warn("cannot register gre protocol handler\n");

        return err;
}


而 gre的错误处理流程中,不会检查 err_handler是否为空指针。然后内核就杯具了!

net/ipv4/gre_demux.c

static void gre_cisco_err(struct sk_buff *skb, u32 info)
{
......
        for (i = 0; i < GRE_IP_PROTO_MAX; i++) {
                struct gre_cisco_protocol *proto;

                proto = rcu_dereference(gre_cisco_proto_list);
                if (!proto)
                        continue;

                if (proto->err_handler(skb, info, &tpi) == PACKET_RCVD)
                        goto out;

        }
......
}


想请教的是 gre_cisco_protocol要求必须提供 err_handler?

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
2 [报告]
发表于 2014-03-20 16:54 |只看该作者
这 BUG从 3.11到 3.13都存在!居然没有人报!

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
3 [报告]
发表于 2014-03-20 17:20 |只看该作者
呵呵,你可以commit一个~~

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
4 [报告]
发表于 2014-03-20 19:39 |只看该作者
本帖最后由 asuka2001 于 2014-03-20 19:39 编辑

回复 3# humjb_1983

我比较奇怪的是,这个 BUG是 100%复现,但是居然没有人报这个 BUG。难道大家都不用 gre vport么?

因为这个 BUG,直接把用户生产环境的机器搞崩溃了。残念个先!

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
5 [报告]
发表于 2014-03-21 08:46 |只看该作者
呵呵,这个反正我们没用过,你的环境没有特殊性,可能新功能磨合期,问题比较多,整个patch提交吧~,到时你的疑问就有maintainer给你解答了。

论坛徽章:
0
6 [报告]
发表于 2014-03-21 09:18 |只看该作者
这是不是说明 linux gre vport的应用太少啊,open-vswitch的发展还有太多不确定性

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
7 [报告]
发表于 2014-03-25 16:15 |只看该作者
David Miller回复说:

Rather, openvswitch should provide an appropriate ->err_handler() that
returns PACKET_RCVD or PACKET_REJECT.


看来是 openvswitch的问题!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP