tcp: get_openreq[46]() changes
authorEric Dumazet <edumazet@google.com>
Fri, 2 Oct 2015 18:43:30 +0000 (11:43 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 3 Oct 2015 11:32:40 +0000 (04:32 -0700)
When request sockets are no longer in a per listener hash table
but on regular TCP ehash, we need to access listener uid
through req->rsk_listener

get_openreq6() also gets a const for its request socket argument.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp_ipv4.c
net/ipv6/tcp_ipv6.c

index 2c7dfe52f473fc97d4ee92f7cac6e59d661bf711..a26341d2ad670036dd82600c47c2953cbf901636 100644 (file)
@@ -1637,7 +1637,6 @@ struct tcp_iter_state {
        enum tcp_seq_states     state;
        struct sock             *syn_wait_sk;
        int                     bucket, offset, sbucket, num;
-       kuid_t                  uid;
        loff_t                  last_pos;
 };
 
index 56f8c63959665b4c36300c6c5ce0c6985e3a1390..a331016162159dc11d78babed46a398a4e867870 100644 (file)
@@ -1871,7 +1871,6 @@ get_sk:
                spin_lock_bh(&icsk->icsk_accept_queue.syn_wait_lock);
                if (reqsk_queue_len(&icsk->icsk_accept_queue)) {
 start_req:
-                       st->uid         = sock_i_uid(sk);
                        st->syn_wait_sk = sk;
                        st->state       = TCP_SEQ_STATE_OPENREQ;
                        st->sbucket     = 0;
@@ -2151,7 +2150,7 @@ void tcp_proc_unregister(struct net *net, struct tcp_seq_afinfo *afinfo)
 EXPORT_SYMBOL(tcp_proc_unregister);
 
 static void get_openreq4(const struct request_sock *req,
-                        struct seq_file *f, int i, kuid_t uid)
+                        struct seq_file *f, int i)
 {
        const struct inet_request_sock *ireq = inet_rsk(req);
        long delta = req->rsk_timer.expires - jiffies;
@@ -2168,7 +2167,8 @@ static void get_openreq4(const struct request_sock *req,
                1,    /* timers active (only the expire timer) */
                jiffies_delta_to_clock_t(delta),
                req->num_timeout,
-               from_kuid_munged(seq_user_ns(f), uid),
+               from_kuid_munged(seq_user_ns(f),
+                                sock_i_uid(req->rsk_listener)),
                0,  /* non standard timer */
                0, /* open_requests have no inode */
                0,
@@ -2278,7 +2278,7 @@ static int tcp4_seq_show(struct seq_file *seq, void *v)
                        get_tcp4_sock(v, seq, st->num);
                break;
        case TCP_SEQ_STATE_OPENREQ:
-               get_openreq4(v, seq, st->num, st->uid);
+               get_openreq4(v, seq, st->num);
                break;
        }
 out:
index 65e797dba504733d7d9bb4df66603046f9224ec3..cadb44a2d34e41af5a800f1c5778d39641322d58 100644 (file)
@@ -1635,7 +1635,7 @@ static void tcp_v6_destroy_sock(struct sock *sk)
 #ifdef CONFIG_PROC_FS
 /* Proc filesystem TCPv6 sock list dumping. */
 static void get_openreq6(struct seq_file *seq,
-                        struct request_sock *req, int i, kuid_t uid)
+                        const struct request_sock *req, int i)
 {
        long ttd = req->rsk_timer.expires - jiffies;
        const struct in6_addr *src = &inet_rsk(req)->ir_v6_loc_addr;
@@ -1659,7 +1659,8 @@ static void get_openreq6(struct seq_file *seq,
                   1,   /* timers active (only the expire timer) */
                   jiffies_to_clock_t(ttd),
                   req->num_timeout,
-                  from_kuid_munged(seq_user_ns(seq), uid),
+                  from_kuid_munged(seq_user_ns(seq),
+                                   sock_i_uid(req->rsk_listener)),
                   0,  /* non standard timer */
                   0, /* open_requests have no inode */
                   0, req);
@@ -1773,7 +1774,7 @@ static int tcp6_seq_show(struct seq_file *seq, void *v)
                        get_tcp6_sock(seq, v, st->num);
                break;
        case TCP_SEQ_STATE_OPENREQ:
-               get_openreq6(seq, v, st->num, st->uid);
+               get_openreq6(seq, v, st->num);
                break;
        }
 out: