- s->seq_ops.start = udp_seq_start;
- s->seq_ops.next = udp_seq_next;
- s->seq_ops.show = afinfo->seq_show;
- s->seq_ops.stop = udp_seq_stop;
- s->net = net;
-
- rc = seq_open(file, &s->seq_ops);
- if (rc)
- goto out_put_net;
-
- seq = file->private_data;
- seq->private = s;
-out:
- return rc;
-out_put_net:
- put_net(net);
-out_kfree:
- kfree(s);
- goto out;
-}
-
-static int udp_seq_release(struct inode *inode, struct file *file)
-{
- struct seq_file *seq = file->private_data;
- struct udp_iter_state *s = seq->private;
-
- put_net(s->net);
- seq_release_private(inode, file);
- return 0;