Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3046d767 authored by Denis V. Lunev's avatar Denis V. Lunev Committed by David S. Miller
Browse files

[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
42a73808 ("[RAW]: Consolidate proc
interface.")

Thanks to Adrian Bunk who originally noticed the problem.

Signed-off-by: default avatarDenis V. Lunev <den@openvz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8cd850ef
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -48,7 +48,8 @@ struct raw_iter_state {
void *raw_seq_start(struct seq_file *seq, loff_t *pos);
void *raw_seq_start(struct seq_file *seq, loff_t *pos);
void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos);
void *raw_seq_next(struct seq_file *seq, void *v, loff_t *pos);
void raw_seq_stop(struct seq_file *seq, void *v);
void raw_seq_stop(struct seq_file *seq, void *v);
int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h);
int raw_seq_open(struct inode *ino, struct file *file,
		 struct raw_hashinfo *h, const struct seq_operations *ops);


#endif
#endif


+4 −4
Original line number Original line Diff line number Diff line
@@ -962,13 +962,13 @@ static const struct seq_operations raw_seq_ops = {
	.show  = raw_seq_show,
	.show  = raw_seq_show,
};
};


int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h)
int raw_seq_open(struct inode *ino, struct file *file,
		 struct raw_hashinfo *h, const struct seq_operations *ops)
{
{
	int err;
	int err;
	struct raw_iter_state *i;
	struct raw_iter_state *i;


	err = seq_open_net(ino, file, &raw_seq_ops,
	err = seq_open_net(ino, file, ops, sizeof(struct raw_iter_state));
			sizeof(struct raw_iter_state));
	if (err < 0)
	if (err < 0)
		return err;
		return err;


@@ -980,7 +980,7 @@ EXPORT_SYMBOL_GPL(raw_seq_open);


static int raw_v4_seq_open(struct inode *inode, struct file *file)
static int raw_v4_seq_open(struct inode *inode, struct file *file)
{
{
	return raw_seq_open(inode, file, &raw_v4_hashinfo);
	return raw_seq_open(inode, file, &raw_v4_hashinfo, &raw_seq_ops);
}
}


static const struct file_operations raw_seq_fops = {
static const struct file_operations raw_seq_fops = {
+1 −1
Original line number Original line Diff line number Diff line
@@ -1262,7 +1262,7 @@ static const struct seq_operations raw6_seq_ops = {


static int raw6_seq_open(struct inode *inode, struct file *file)
static int raw6_seq_open(struct inode *inode, struct file *file)
{
{
	return raw_seq_open(inode, file, &raw_v6_hashinfo);
	return raw_seq_open(inode, file, &raw_v6_hashinfo, &raw6_seq_ops);
}
}


static const struct file_operations raw6_seq_fops = {
static const struct file_operations raw6_seq_fops = {