]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/linux-2.6.32.43-cve_2011_1767+1768.patch
kernel: add a patch for cve-2011-1767/1768.
[people/pmueller/ipfire-2.x.git] / src / patches / linux-2.6.32.43-cve_2011_1767+1768.patch
1 diff -Naur linux-2.6.32.43.org/net/ipv4/ip_gre.c linux-2.6.32.43/net/ipv4/ip_gre.c
2 --- linux-2.6.32.43.org/net/ipv4/ip_gre.c 2011-07-13 05:29:43.000000000 +0200
3 +++ linux-2.6.32.43/net/ipv4/ip_gre.c 2011-06-20 19:27:06.000000000 +0200
4 @@ -1665,14 +1665,16 @@
5
6 printk(KERN_INFO "GRE over IPv4 tunneling driver\n");
7
8 - if (inet_add_protocol(&ipgre_protocol, IPPROTO_GRE) < 0) {
9 - printk(KERN_INFO "ipgre init: can't add protocol\n");
10 - return -EAGAIN;
11 - }
12 -
13 err = register_pernet_gen_device(&ipgre_net_id, &ipgre_net_ops);
14 if (err < 0)
15 + goto out;
16 +
17 + err = inet_add_protocol(&ipgre_protocol, IPPROTO_GRE);
18 + if (err < 0) {
19 + printk(KERN_INFO "ipgre init: can't add protocol\n");
20 + err = -EAGAIN;
21 goto gen_device_failed;
22 + }
23
24 err = rtnl_link_register(&ipgre_link_ops);
25 if (err < 0)
26 @@ -1688,9 +1690,9 @@
27 tap_ops_failed:
28 rtnl_link_unregister(&ipgre_link_ops);
29 rtnl_link_failed:
30 - unregister_pernet_gen_device(ipgre_net_id, &ipgre_net_ops);
31 -gen_device_failed:
32 inet_del_protocol(&ipgre_protocol, IPPROTO_GRE);
33 +gen_device_failed:
34 + unregister_pernet_gen_device(ipgre_net_id, &ipgre_net_ops);
35 goto out;
36 }
37
38 @@ -1698,9 +1700,10 @@
39 {
40 rtnl_link_unregister(&ipgre_tap_ops);
41 rtnl_link_unregister(&ipgre_link_ops);
42 - unregister_pernet_gen_device(ipgre_net_id, &ipgre_net_ops);
43 if (inet_del_protocol(&ipgre_protocol, IPPROTO_GRE) < 0)
44 printk(KERN_INFO "ipgre close: can't remove protocol\n");
45 +
46 + unregister_pernet_gen_device(ipgre_net_id, &ipgre_net_ops);
47 }
48
49 module_init(ipgre_init);
50 diff -Naur linux-2.6.32.43.org/net/ipv4/ipip.c linux-2.6.32.43/net/ipv4/ipip.c
51 --- linux-2.6.32.43.org/net/ipv4/ipip.c 2011-07-13 05:29:43.000000000 +0200
52 +++ linux-2.6.32.43/net/ipv4/ipip.c 2011-06-20 19:27:06.000000000 +0200
53 @@ -830,15 +830,14 @@
54
55 printk(banner);
56
57 - if (xfrm4_tunnel_register(&ipip_handler, AF_INET)) {
58 + err = register_pernet_gen_device(&ipip_net_id, &ipip_net_ops);
59 + if (err < 0)
60 + return err;
61 + err = xfrm4_tunnel_register(&ipip_handler, AF_INET);
62 + if (err < 0) {
63 + unregister_pernet_gen_device(ipip_net_id, &ipip_net_ops);
64 printk(KERN_INFO "ipip init: can't register tunnel\n");
65 - return -EAGAIN;
66 }
67 -
68 - err = register_pernet_gen_device(&ipip_net_id, &ipip_net_ops);
69 - if (err)
70 - xfrm4_tunnel_deregister(&ipip_handler, AF_INET);
71 -
72 return err;
73 }
74
75 diff -Naur linux-2.6.32.43.org/net/ipv6/ip6_tunnel.c linux-2.6.32.43/net/ipv6/ip6_tunnel.c
76 --- linux-2.6.32.43.org/net/ipv6/ip6_tunnel.c 2011-07-13 05:29:43.000000000 +0200
77 +++ linux-2.6.32.43/net/ipv6/ip6_tunnel.c 2011-06-20 19:27:06.000000000 +0200
78 @@ -1466,10 +1465,14 @@
79 {
80 int err;
81
82 + err = register_pernet_gen_device(&ip6_tnl_net_id, &ip6_tnl_net_ops);
83 + if (err < 0)
84 + goto out;
85 +
86 if (xfrm6_tunnel_register(&ip4ip6_handler, AF_INET)) {
87 printk(KERN_ERR "ip6_tunnel init: can't register ip4ip6\n");
88 err = -EAGAIN;
89 - goto out;
90 + goto unreg_pernet_dev;
91 }
92
93 if (xfrm6_tunnel_register(&ip6ip6_handler, AF_INET6)) {
94 @@ -1478,14 +1481,12 @@
95 goto unreg_ip4ip6;
96 }
97
98 - err = register_pernet_gen_device(&ip6_tnl_net_id, &ip6_tnl_net_ops);
99 - if (err < 0)
100 - goto err_pernet;
101 return 0;
102 -err_pernet:
103 - xfrm6_tunnel_deregister(&ip6ip6_handler, AF_INET6);
104 +
105 unreg_ip4ip6:
106 xfrm6_tunnel_deregister(&ip4ip6_handler, AF_INET);
107 +unreg_pernet_dev:
108 + unregister_pernet_gen_device(ip6_tnl_net_id, &ip6_tnl_net_ops);
109 out:
110 return err;
111 }
112 diff -Naur linux-2.6.32.43.org/net/ipv6/sit.c linux-2.6.32.43/net/ipv6/sit.c
113 --- linux-2.6.32.43.org/net/ipv6/sit.c 2011-07-13 05:29:43.000000000 +0200
114 +++ linux-2.6.32.43/net/ipv6/sit.c 2011-06-20 19:27:06.000000000 +0200
115 @@ -1086,15 +1086,17 @@
116
117 printk(KERN_INFO "IPv6 over IPv4 tunneling driver\n");
118
119 - if (xfrm4_tunnel_register(&sit_handler, AF_INET6) < 0) {
120 + err = register_pernet_gen_device(&sit_net_id, &sit_net_ops);
121 + if (err < 0)
122 + return err;
123 +
124 + err = xfrm4_tunnel_register(&sit_handler, AF_INET6);
125 + if (err < 0) {
126 + unregister_pernet_gen_device(sit_net_id, &sit_net_ops);
127 printk(KERN_INFO "sit init: Can't add protocol\n");
128 return -EAGAIN;
129 }
130
131 - err = register_pernet_gen_device(&sit_net_id, &sit_net_ops);
132 - if (err < 0)
133 - xfrm4_tunnel_deregister(&sit_handler, AF_INET6);
134 -
135 return err;
136 }
137