Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[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>

authored by

Denis V. Lunev and committed by
David S. Miller
3046d767 8cd850ef

+7 -6
+2 -1
include/net/raw.h
··· 48 48 void *raw_seq_start(struct seq_file *seq, loff_t *pos); 49 49 void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos); 50 50 void raw_seq_stop(struct seq_file *seq, void *v); 51 - int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h); 51 + int raw_seq_open(struct inode *ino, struct file *file, 52 + struct raw_hashinfo *h, const struct seq_operations *ops); 52 53 53 54 #endif 54 55
+4 -4
net/ipv4/raw.c
··· 962 962 .show = raw_seq_show, 963 963 }; 964 964 965 - int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h) 965 + int raw_seq_open(struct inode *ino, struct file *file, 966 + struct raw_hashinfo *h, const struct seq_operations *ops) 966 967 { 967 968 int err; 968 969 struct raw_iter_state *i; 969 970 970 - err = seq_open_net(ino, file, &raw_seq_ops, 971 - sizeof(struct raw_iter_state)); 971 + err = seq_open_net(ino, file, ops, sizeof(struct raw_iter_state)); 972 972 if (err < 0) 973 973 return err; 974 974 ··· 980 980 981 981 static 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 986 986 static const struct file_operations raw_seq_fops = {
+1 -1
net/ipv6/raw.c
··· 1262 1262 1263 1263 static 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 1268 1268 static const struct file_operations raw6_seq_fops = {