Skip to content

Commit

Permalink
[RAW]: Family check in the /proc/net/raw[6] is extra.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Denis V. Lunev authored and David S. Miller committed Feb 1, 2008
1 parent b164106 commit 377cf82
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 12 deletions.
4 changes: 1 addition & 3 deletions include/net/raw.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,14 @@ extern void raw_proc_exit(void);
struct raw_iter_state {
struct seq_net_private p;
int bucket;
unsigned short family;
struct raw_hashinfo *h;
};

#define raw_seq_private(seq) ((struct raw_iter_state *)(seq)->private)
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_stop(struct seq_file *seq, void *v);
int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h,
unsigned short family);
int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h);

#endif

Expand Down
12 changes: 4 additions & 8 deletions net/ipv4/raw.c
Original file line number Diff line number Diff line change
Expand Up @@ -862,8 +862,7 @@ static struct sock *raw_get_first(struct seq_file *seq)
struct hlist_node *node;

sk_for_each(sk, node, &state->h->ht[state->bucket])
if (sk->sk_net == state->p.net &&
sk->sk_family == state->family)
if (sk->sk_net == state->p.net)
goto found;
}
sk = NULL;
Expand All @@ -879,8 +878,7 @@ static struct sock *raw_get_next(struct seq_file *seq, struct sock *sk)
sk = sk_next(sk);
try_again:
;
} while (sk && sk->sk_net != state->p.net &&
sk->sk_family != state->family);
} while (sk && sk->sk_net != state->p.net);

if (!sk && ++state->bucket < RAW_HTABLE_SIZE) {
sk = sk_head(&state->h->ht[state->bucket]);
Expand Down Expand Up @@ -974,8 +972,7 @@ static const struct seq_operations raw_seq_ops = {
.show = raw_seq_show,
};

int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h,
unsigned short family)
int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h)
{
int err;
struct raw_iter_state *i;
Expand All @@ -987,14 +984,13 @@ int raw_seq_open(struct inode *ino, struct file *file, struct raw_hashinfo *h,

i = raw_seq_private((struct seq_file *)file->private_data);
i->h = h;
i->family = family;
return 0;
}
EXPORT_SYMBOL_GPL(raw_seq_open);

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

static const struct file_operations raw_seq_fops = {
Expand Down
2 changes: 1 addition & 1 deletion net/ipv6/raw.c
Original file line number Diff line number Diff line change
Expand Up @@ -1262,7 +1262,7 @@ static const struct seq_operations raw6_seq_ops = {

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

static const struct file_operations raw6_seq_fops = {
Expand Down

0 comments on commit 377cf82

Please sign in to comment.