]> git.ipfire.org Git - thirdparty/kernel/stable.git/blobdiff - net/rxrpc/proc.c
rxrpc: Support network namespacing
[thirdparty/kernel/stable.git] / net / rxrpc / proc.c
index b9bcfbfb095c5f0fdb4e939c9873ff8a2f7fa667..e92d8405b15a707900823c1582da2b03ec487e4a 100644 (file)
@@ -30,19 +30,25 @@ static const char *const rxrpc_conn_states[RXRPC_CONN__NR_STATES] = {
  */
 static void *rxrpc_call_seq_start(struct seq_file *seq, loff_t *_pos)
 {
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
+
        rcu_read_lock();
-       read_lock(&rxrpc_call_lock);
-       return seq_list_start_head(&rxrpc_calls, *_pos);
+       read_lock(&rxnet->call_lock);
+       return seq_list_start_head(&rxnet->calls, *_pos);
 }
 
 static void *rxrpc_call_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 {
-       return seq_list_next(v, &rxrpc_calls, pos);
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
+
+       return seq_list_next(v, &rxnet->calls, pos);
 }
 
 static void rxrpc_call_seq_stop(struct seq_file *seq, void *v)
 {
-       read_unlock(&rxrpc_call_lock);
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
+
+       read_unlock(&rxnet->call_lock);
        rcu_read_unlock();
 }
 
@@ -52,10 +58,11 @@ static int rxrpc_call_seq_show(struct seq_file *seq, void *v)
        struct rxrpc_sock *rx;
        struct rxrpc_peer *peer;
        struct rxrpc_call *call;
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
        rxrpc_seq_t tx_hard_ack, rx_hard_ack;
        char lbuff[50], rbuff[50];
 
-       if (v == &rxrpc_calls) {
+       if (v == &rxnet->calls) {
                seq_puts(seq,
                         "Proto Local                                          "
                         " Remote                                         "
@@ -113,7 +120,8 @@ static const struct seq_operations rxrpc_call_seq_ops = {
 
 static int rxrpc_call_seq_open(struct inode *inode, struct file *file)
 {
-       return seq_open(file, &rxrpc_call_seq_ops);
+       return seq_open_net(inode, file, &rxrpc_call_seq_ops,
+                           sizeof(struct seq_net_private));
 }
 
 const struct file_operations rxrpc_call_seq_fops = {
@@ -129,27 +137,34 @@ const struct file_operations rxrpc_call_seq_fops = {
  */
 static void *rxrpc_connection_seq_start(struct seq_file *seq, loff_t *_pos)
 {
-       read_lock(&rxrpc_connection_lock);
-       return seq_list_start_head(&rxrpc_connection_proc_list, *_pos);
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
+
+       read_lock(&rxnet->conn_lock);
+       return seq_list_start_head(&rxnet->conn_proc_list, *_pos);
 }
 
 static void *rxrpc_connection_seq_next(struct seq_file *seq, void *v,
                                       loff_t *pos)
 {
-       return seq_list_next(v, &rxrpc_connection_proc_list, pos);
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
+
+       return seq_list_next(v, &rxnet->conn_proc_list, pos);
 }
 
 static void rxrpc_connection_seq_stop(struct seq_file *seq, void *v)
 {
-       read_unlock(&rxrpc_connection_lock);
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
+
+       read_unlock(&rxnet->conn_lock);
 }
 
 static int rxrpc_connection_seq_show(struct seq_file *seq, void *v)
 {
        struct rxrpc_connection *conn;
+       struct rxrpc_net *rxnet = rxrpc_net(seq_file_net(seq));
        char lbuff[50], rbuff[50];
 
-       if (v == &rxrpc_connection_proc_list) {
+       if (v == &rxnet->conn_proc_list) {
                seq_puts(seq,
                         "Proto Local                                          "
                         " Remote                                         "
@@ -197,7 +212,8 @@ static const struct seq_operations rxrpc_connection_seq_ops = {
 
 static int rxrpc_connection_seq_open(struct inode *inode, struct file *file)
 {
-       return seq_open(file, &rxrpc_connection_seq_ops);
+       return seq_open_net(inode, file, &rxrpc_connection_seq_ops,
+                           sizeof(struct seq_net_private));
 }
 
 const struct file_operations rxrpc_connection_seq_fops = {