diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-25 20:48:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-25 20:48:07 -0400 |
commit | b8e6c91c74e9f0279b7c51048779b3d62da60b88 (patch) | |
tree | 3bce45825a2700e1cbc75f488728ec02801bb3d3 /net | |
parent | e5778ec91e823b97262f045814d34d0abde689c0 (diff) | |
parent | c2d42545774c4bba7232521d836d0793330e3a4e (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
bnx2x: Version update
bnx2x: Multi Queue
bnx2x: NAPI and interrupts enable/disable
bnx2x: NIC load failure cleanup
bnx2x: Initialization structure
bnx2x: HW lock timeout
bnx2x: Minimize lock time
bnx2x: Fan failure mechanism on additional design
bnx2x: Rx work check
ipv6: sysctl fixes
ipv4: sysctl fixes
sctp: add verification checks to SCTP_AUTH_KEY option
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/route.c | 24 | ||||
-rw-r--r-- | net/ipv6/sysctl_net_ipv6.c | 2 | ||||
-rw-r--r-- | net/sctp/auth.c | 4 | ||||
-rw-r--r-- | net/sctp/socket.c | 5 |
4 files changed, 30 insertions, 5 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index cca921ea8550..e91bafeb32f4 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -3116,14 +3116,23 @@ static ctl_table ipv4_route_table[] = { | |||
3116 | { .ctl_name = 0 } | 3116 | { .ctl_name = 0 } |
3117 | }; | 3117 | }; |
3118 | 3118 | ||
3119 | static __net_initdata struct ctl_path ipv4_route_path[] = { | 3119 | static struct ctl_table empty[1]; |
3120 | |||
3121 | static struct ctl_table ipv4_skeleton[] = | ||
3122 | { | ||
3123 | { .procname = "route", .ctl_name = NET_IPV4_ROUTE, | ||
3124 | .child = ipv4_route_table}, | ||
3125 | { .procname = "neigh", .ctl_name = NET_IPV4_NEIGH, | ||
3126 | .child = empty}, | ||
3127 | { } | ||
3128 | }; | ||
3129 | |||
3130 | static __net_initdata struct ctl_path ipv4_path[] = { | ||
3120 | { .procname = "net", .ctl_name = CTL_NET, }, | 3131 | { .procname = "net", .ctl_name = CTL_NET, }, |
3121 | { .procname = "ipv4", .ctl_name = NET_IPV4, }, | 3132 | { .procname = "ipv4", .ctl_name = NET_IPV4, }, |
3122 | { .procname = "route", .ctl_name = NET_IPV4_ROUTE, }, | ||
3123 | { }, | 3133 | { }, |
3124 | }; | 3134 | }; |
3125 | 3135 | ||
3126 | |||
3127 | static struct ctl_table ipv4_route_flush_table[] = { | 3136 | static struct ctl_table ipv4_route_flush_table[] = { |
3128 | { | 3137 | { |
3129 | .ctl_name = NET_IPV4_ROUTE_FLUSH, | 3138 | .ctl_name = NET_IPV4_ROUTE_FLUSH, |
@@ -3136,6 +3145,13 @@ static struct ctl_table ipv4_route_flush_table[] = { | |||
3136 | { .ctl_name = 0 }, | 3145 | { .ctl_name = 0 }, |
3137 | }; | 3146 | }; |
3138 | 3147 | ||
3148 | static __net_initdata struct ctl_path ipv4_route_path[] = { | ||
3149 | { .procname = "net", .ctl_name = CTL_NET, }, | ||
3150 | { .procname = "ipv4", .ctl_name = NET_IPV4, }, | ||
3151 | { .procname = "route", .ctl_name = NET_IPV4_ROUTE, }, | ||
3152 | { }, | ||
3153 | }; | ||
3154 | |||
3139 | static __net_init int sysctl_route_net_init(struct net *net) | 3155 | static __net_init int sysctl_route_net_init(struct net *net) |
3140 | { | 3156 | { |
3141 | struct ctl_table *tbl; | 3157 | struct ctl_table *tbl; |
@@ -3287,7 +3303,7 @@ int __init ip_rt_init(void) | |||
3287 | */ | 3303 | */ |
3288 | void __init ip_static_sysctl_init(void) | 3304 | void __init ip_static_sysctl_init(void) |
3289 | { | 3305 | { |
3290 | register_sysctl_paths(ipv4_route_path, ipv4_route_table); | 3306 | register_sysctl_paths(ipv4_path, ipv4_skeleton); |
3291 | } | 3307 | } |
3292 | #endif | 3308 | #endif |
3293 | 3309 | ||
diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c index e6dfaeac6be3..587f8f60c489 100644 --- a/net/ipv6/sysctl_net_ipv6.c +++ b/net/ipv6/sysctl_net_ipv6.c | |||
@@ -156,7 +156,7 @@ static struct ctl_table_header *ip6_base; | |||
156 | int ipv6_static_sysctl_register(void) | 156 | int ipv6_static_sysctl_register(void) |
157 | { | 157 | { |
158 | static struct ctl_table empty[1]; | 158 | static struct ctl_table empty[1]; |
159 | ip6_base = register_net_sysctl_rotable(net_ipv6_ctl_path, empty); | 159 | ip6_base = register_sysctl_paths(net_ipv6_ctl_path, empty); |
160 | if (ip6_base == NULL) | 160 | if (ip6_base == NULL) |
161 | return -ENOMEM; | 161 | return -ENOMEM; |
162 | return 0; | 162 | return 0; |
diff --git a/net/sctp/auth.c b/net/sctp/auth.c index 675a5c3e68a6..1fcb4cf2f4c9 100644 --- a/net/sctp/auth.c +++ b/net/sctp/auth.c | |||
@@ -80,6 +80,10 @@ static struct sctp_auth_bytes *sctp_auth_create_key(__u32 key_len, gfp_t gfp) | |||
80 | { | 80 | { |
81 | struct sctp_auth_bytes *key; | 81 | struct sctp_auth_bytes *key; |
82 | 82 | ||
83 | /* Verify that we are not going to overflow INT_MAX */ | ||
84 | if ((INT_MAX - key_len) < sizeof(struct sctp_auth_bytes)) | ||
85 | return NULL; | ||
86 | |||
83 | /* Allocate the shared key */ | 87 | /* Allocate the shared key */ |
84 | key = kmalloc(sizeof(struct sctp_auth_bytes) + key_len, gfp); | 88 | key = kmalloc(sizeof(struct sctp_auth_bytes) + key_len, gfp); |
85 | if (!key) | 89 | if (!key) |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index bb5c9ef13046..afa952e726d7 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -3144,6 +3144,11 @@ static int sctp_setsockopt_auth_key(struct sock *sk, | |||
3144 | goto out; | 3144 | goto out; |
3145 | } | 3145 | } |
3146 | 3146 | ||
3147 | if (authkey->sca_keylength > optlen) { | ||
3148 | ret = -EINVAL; | ||
3149 | goto out; | ||
3150 | } | ||
3151 | |||
3147 | asoc = sctp_id2assoc(sk, authkey->sca_assoc_id); | 3152 | asoc = sctp_id2assoc(sk, authkey->sca_assoc_id); |
3148 | if (!asoc && authkey->sca_assoc_id && sctp_style(sk, UDP)) { | 3153 | if (!asoc && authkey->sca_assoc_id && sctp_style(sk, UDP)) { |
3149 | ret = -EINVAL; | 3154 | ret = -EINVAL; |