--- linux-2.6.25.11-vs2.3.0.34.13.3/net/netlink/af_netlink.c 2008-04-19 15:14:52.000000000 -0400 +++ linux-2.6.25.11-vs2.3.0.34.13.4/net/netlink/af_netlink.c 2008-07-16 00:02:34.000000000 -0400 @@ -1764,6 +1764,8 @@ static struct sock *netlink_seq_socket_i sk_for_each(s, node, &hash->table[j]) { if (iter->p.net != s->sk_net) continue; + if (!nx_check(s->sk_nid, VS_WATCH_P | VS_IDENT)) + continue; if (off == pos) { iter->link = i; iter->hash_idx = j; @@ -1798,7 +1800,8 @@ static void *netlink_seq_next(struct seq s = v; do { s = sk_next(s); - } while (s && (iter->p.net != s->sk_net)); + } while (s && (iter->p.net != s->sk_net || + !nx_check(s->sk_nid, VS_WATCH_P | VS_IDENT))); if (s) return s; @@ -1810,7 +1813,8 @@ static void *netlink_seq_next(struct seq for (; j <= hash->mask; j++) { s = sk_head(&hash->table[j]); - while (s && (iter->p.net != s->sk_net)) + while (s && (iter->p.net != s->sk_net || + !nx_check(s->sk_nid, VS_WATCH_P | VS_IDENT))) s = sk_next(s); if (s) { iter->link = i; --- linux-2.6.25.11-vs2.3.0.34.13.3/net/unix/af_unix.c 2008-04-19 15:55:39.000000000 -0400 +++ linux-2.6.25.11-vs2.3.0.34.13.4/net/unix/af_unix.c 2008-07-16 00:03:11.000000000 -0400 @@ -2028,6 +2028,8 @@ static struct sock *unix_seq_idx(struct for (s = first_unix_socket(&iter->i); s; s = next_unix_socket(&iter->i, s)) { if (s->sk_net != iter->p.net) continue; + if (!nx_check(s->sk_nid, VS_WATCH_P | VS_IDENT)) + continue; if (off == pos) return s; ++off; @@ -2054,7 +2056,8 @@ static void *unix_seq_next(struct seq_fi sk = first_unix_socket(&iter->i); else sk = next_unix_socket(&iter->i, sk); - while (sk && (sk->sk_net != iter->p.net)) + while (sk && (sk->sk_net != iter->p.net || + !nx_check(sk->sk_nid, VS_WATCH_P | VS_IDENT))) sk = next_unix_socket(&iter->i, sk); return sk; }