aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis V. Lunev <den@openvz.org>2008-01-31 06:48:55 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-31 22:27:26 -0500
commit3046d76746311ac7ff0cdc3ec42db15730528dbf (patch)
tree575b92705383d8ae67aee0511cdbf46bb4de9ef9
parent8cd850efa4948d57a2ed836911cfd1ab299e89c6 (diff)
[RAW]: Wrong content of the /proc/net/raw6.
The address of IPv6 raw sockets was shown in the wrong format, from IPv4 ones. The problem has been introduced by the commit 42a73808ed4f30b739eb52bcbb33a02fe62ceef5 ("[RAW]: Consolidate proc interface.") Thanks to Adrian Bunk who originally noticed the problem. Signed-off-by: Denis V. Lunev <den@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/raw.h3
-rw-r--r--net/ipv4/raw.c8
-rw-r--r--net/ipv6/raw.c2
3 files changed, 7 insertions, 6 deletions
diff --git a/include/net/raw.h b/include/net/raw.h
index c7ea7a2aca86..1828f81fe374 100644
--- a/include/net/raw.h
+++ b/include/net/raw.h
@@ -48,7 +48,8 @@ struct raw_iter_state {
48void *raw_seq_start(struct seq_file *seq, loff_t *pos); 48void *raw_seq_start(struct seq_file *seq, loff_t *pos);
49void *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);
50void raw_seq_stop(struct seq_file *seq, void *v); 50void raw_seq_stop(struct seq_file *seq, void *v);
51int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h); 51int raw_seq_open(struct inode *ino, struct file *file,
52 struct raw_hashinfo *h, const struct seq_operations *ops);
52 53
53#endif 54#endif
54 55
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
index 830f19e2fce9..a3002fe65b7f 100644
--- a/net/ipv4/raw.c
+++ b/net/ipv4/raw.c
@@ -962,13 +962,13 @@ static const struct seq_operations raw_seq_ops = {
962 .show = raw_seq_show, 962 .show = raw_seq_show,
963}; 963};
964 964
965int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h) 965int raw_seq_open(struct inode *ino, struct file *file,
966 struct raw_hashinfo *h, const struct seq_operations *ops)
966{ 967{
967 int err; 968 int err;
968 struct raw_iter_state *i; 969 struct raw_iter_state *i;
969 970
970 err = seq_open_net(ino, file, &raw_seq_ops, 971 err = seq_open_net(ino, file, ops, sizeof(struct raw_iter_state));
971 sizeof(struct raw_iter_state));
972 if (err < 0) 972 if (err < 0)
973 return err; 973 return err;
974 974
@@ -980,7 +980,7 @@ EXPORT_SYMBOL_GPL(raw_seq_open);
980 980
981static int raw_v4_seq_open(struct inode *inode, struct file *file) 981static int raw_v4_seq_open(struct inode *inode, struct file *file)
982{ 982{
983 return raw_seq_open(inode, file, &raw_v4_hashinfo); 983 return raw_seq_open(inode, file, &raw_v4_hashinfo, &raw_seq_ops);
984} 984}
985 985
986static const struct file_operations raw_seq_fops = { 986static const struct file_operations raw_seq_fops = {
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index a2cf49911ffd..8897ccf8086a 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); 1265 return raw_seq_open(inode, file, &raw_v6_hashinfo, &raw6_seq_ops);
1266} 1266}
1267 1267
1268static const struct file_operations raw6_seq_fops = { 1268static const struct file_operations raw6_seq_fops = {