aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis V. Lunev <den@openvz.org>2008-01-31 06:46:12 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-31 22:27:24 -0500
commit377cf82d66ea43f3d3cb82c2563e65b5c12c9bfd (patch)
tree9bce5ff5153b91104dcf560626a12289d013809e
parentb1641064a3f4a58644bc2e8edf40c025c58473b4 (diff)
[RAW]: Family check in the /proc/net/raw[6] is extra.
Different hashtables are used for IPv6 and IPv4 raw sockets, so no need to check the socket family in the iterator over hashtables. Clean this out. Signed-off-by: Denis V. Lunev <den@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/raw.h4
-rw-r--r--net/ipv4/raw.c12
-rw-r--r--net/ipv6/raw.c2
3 files changed, 6 insertions, 12 deletions
diff --git a/include/net/raw.h b/include/net/raw.h
index cca81d8b2d8b..c7ea7a2aca86 100644
--- a/include/net/raw.h
+++ b/include/net/raw.h
@@ -41,7 +41,6 @@ extern void raw_proc_exit(void);
41struct raw_iter_state { 41struct raw_iter_state {
42 struct seq_net_private p; 42 struct seq_net_private p;
43 int bucket; 43 int bucket;
44 unsigned short family;
45 struct raw_hashinfo *h; 44 struct raw_hashinfo *h;
46}; 45};
47 46
@@ -49,8 +48,7 @@ struct raw_iter_state {
49void *raw_seq_start(struct seq_file *seq, loff_t *pos); 48void *raw_seq_start(struct seq_file *seq, loff_t *pos);
50void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos); 49void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos);
51void raw_seq_stop(struct seq_file *seq, void *v); 50void raw_seq_stop(struct seq_file *seq, void *v);
52int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h, 51int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h);
53 unsigned short family);
54 52
55#endif 53#endif
56 54
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index f863c3dc5421..507cbfe72eb5 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -862,8 +862,7 @@ static struct sock *raw_get_first(struct seq_file *seq)
862 struct hlist_node *node; 862 struct hlist_node *node;
863 863
864 sk_for_each(sk, node, &state->h->ht[state->bucket]) 864 sk_for_each(sk, node, &state->h->ht[state->bucket])
865 if (sk->sk_net == state->p.net && 865 if (sk->sk_net == state->p.net)
866 sk->sk_family == state->family)
867 goto found; 866 goto found;
868 } 867 }
869 sk = NULL; 868 sk = NULL;
@@ -879,8 +878,7 @@ static struct sock *raw_get_next(struct seq_file *seq, struct sock *sk)
879 sk = sk_next(sk); 878 sk = sk_next(sk);
880try_again: 879try_again:
881 ; 880 ;
882 } while (sk && sk->sk_net != state->p.net && 881 } while (sk && sk->sk_net != state->p.net);
883 sk->sk_family != state->family);
884 882
885 if (!sk && ++state->bucket < RAW_HTABLE_SIZE) { 883 if (!sk && ++state->bucket < RAW_HTABLE_SIZE) {
886 sk = sk_head(&state->h->ht[state->bucket]); 884 sk = sk_head(&state->h->ht[state->bucket]);
@@ -974,8 +972,7 @@ static const struct seq_operations raw_seq_ops = {
974 .show = raw_seq_show, 972 .show = raw_seq_show,
975}; 973};
976 974
977int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h, 975int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h)
978 unsigned short family)
979{ 976{
980 int err; 977 int err;
981 struct raw_iter_state *i; 978 struct raw_iter_state *i;
@@ -987,14 +984,13 @@ int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h,
987 984
988 i = raw_seq_private((struct seq_file *)file->private_data); 985 i = raw_seq_private((struct seq_file *)file->private_data);
989 i->h = h; 986 i->h = h;
990 i->family = family;
991 return 0; 987 return 0;
992} 988}
993EXPORT_SYMBOL_GPL(raw_seq_open); 989EXPORT_SYMBOL_GPL(raw_seq_open);
994 990
995static int raw_v4_seq_open(struct inode *inode, struct file *file) 991static int raw_v4_seq_open(struct inode *inode, struct file *file)
996{ 992{
997 return raw_seq_open(inode, file, &raw_v4_hashinfo, PF_INET); 993 return raw_seq_open(inode, file, &raw_v4_hashinfo);
998} 994}
999 995
1000static const struct file_operations raw_seq_fops = { 996static const struct file_operations raw_seq_fops = {
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index d61c63dedbf6..a2cf49911ffd 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -1262,7 +1262,7 @@ static const struct seq_operations raw6_seq_ops = {
1262 1262
1263static int raw6_seq_open(struct inode *inode, struct file *file) 1263static int raw6_seq_open(struct inode *inode, struct file *file)
1264{ 1264{
1265 return raw_seq_open(inode, file, &raw_v6_hashinfo, PF_INET6); 1265 return raw_seq_open(inode, file, &raw_v6_hashinfo);
1266} 1266}
1267 1267
1268static const struct file_operations raw6_seq_fops = { 1268static const struct file_operations raw6_seq_fops = {