diff options
Diffstat (limited to 'net/atm/br2684.c')
-rw-r--r-- | net/atm/br2684.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/net/atm/br2684.c b/net/atm/br2684.c index 0e9f00c5c899..faa6aaf67563 100644 --- a/net/atm/br2684.c +++ b/net/atm/br2684.c | |||
@@ -699,28 +699,13 @@ static struct atm_ioctl br2684_ioctl_ops = { | |||
699 | #ifdef CONFIG_PROC_FS | 699 | #ifdef CONFIG_PROC_FS |
700 | static void *br2684_seq_start(struct seq_file *seq, loff_t *pos) | 700 | static void *br2684_seq_start(struct seq_file *seq, loff_t *pos) |
701 | { | 701 | { |
702 | loff_t offs = 0; | ||
703 | struct br2684_dev *brd; | ||
704 | |||
705 | read_lock(&devs_lock); | 702 | read_lock(&devs_lock); |
706 | 703 | return seq_list_start(&br2684_devs, *pos); | |
707 | list_for_each_entry(brd, &br2684_devs, br2684_devs) { | ||
708 | if (offs == *pos) | ||
709 | return brd; | ||
710 | ++offs; | ||
711 | } | ||
712 | return NULL; | ||
713 | } | 704 | } |
714 | 705 | ||
715 | static void *br2684_seq_next(struct seq_file *seq, void *v, loff_t *pos) | 706 | static void *br2684_seq_next(struct seq_file *seq, void *v, loff_t *pos) |
716 | { | 707 | { |
717 | struct br2684_dev *brd = v; | 708 | return seq_list_next(v, &br2684_devs, pos); |
718 | |||
719 | ++*pos; | ||
720 | |||
721 | brd = list_entry(brd->br2684_devs.next, | ||
722 | struct br2684_dev, br2684_devs); | ||
723 | return (&brd->br2684_devs != &br2684_devs) ? brd : NULL; | ||
724 | } | 709 | } |
725 | 710 | ||
726 | static void br2684_seq_stop(struct seq_file *seq, void *v) | 711 | static void br2684_seq_stop(struct seq_file *seq, void *v) |
@@ -730,7 +715,8 @@ static void br2684_seq_stop(struct seq_file *seq, void *v) | |||
730 | 715 | ||
731 | static int br2684_seq_show(struct seq_file *seq, void *v) | 716 | static int br2684_seq_show(struct seq_file *seq, void *v) |
732 | { | 717 | { |
733 | const struct br2684_dev *brdev = v; | 718 | const struct br2684_dev *brdev = list_entry(v, struct br2684_dev, |
719 | br2684_devs); | ||
734 | const struct net_device *net_dev = brdev->net_dev; | 720 | const struct net_device *net_dev = brdev->net_dev; |
735 | const struct br2684_vcc *brvcc; | 721 | const struct br2684_vcc *brvcc; |
736 | 722 | ||
@@ -772,7 +758,7 @@ static int br2684_seq_show(struct seq_file *seq, void *v) | |||
772 | return 0; | 758 | return 0; |
773 | } | 759 | } |
774 | 760 | ||
775 | static struct seq_operations br2684_seq_ops = { | 761 | static const struct seq_operations br2684_seq_ops = { |
776 | .start = br2684_seq_start, | 762 | .start = br2684_seq_start, |
777 | .next = br2684_seq_next, | 763 | .next = br2684_seq_next, |
778 | .stop = br2684_seq_stop, | 764 | .stop = br2684_seq_stop, |