static void * sctp_eps_seq_start(struct seq_file *seq, loff_t *pos)
 {
-       if (*pos > sctp_ep_hashsize)
+       if (*pos >= sctp_ep_hashsize)
                return NULL;
 
        if (*pos < 0)
        if (*pos == 0)
                seq_printf(seq, " ENDPT     SOCK   STY SST HBKT LPORT   UID INODE LADDRS\n");
 
-       ++*pos;
-
        return (void *)pos;
 }
 
 
 static void * sctp_eps_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 {
-       if (*pos > sctp_ep_hashsize)
+       if (++*pos >= sctp_ep_hashsize)
                return NULL;
 
-       ++*pos;
-
        return pos;
 }
 
        struct sock *sk;
        int    hash = *(int *)v;
 
-       if (hash > sctp_ep_hashsize)
+       if (hash >= sctp_ep_hashsize)
                return -ENOMEM;
 
-       head = &sctp_ep_hashtable[hash-1];
+       head = &sctp_ep_hashtable[hash];
        sctp_local_bh_disable();
        read_lock(&head->lock);
        for (epb = head->chain; epb; epb = epb->next) {
                ep = sctp_ep(epb);
                sk = epb->sk;
                seq_printf(seq, "%8p %8p %-3d %-3d %-4d %-5d %5d %5lu ", ep, sk,
-                          sctp_sk(sk)->type, sk->sk_state, hash-1,
+                          sctp_sk(sk)->type, sk->sk_state, hash,
                           epb->bind_addr.port,
                           sock_i_uid(sk), sock_i_ino(sk));
 
 
 static void * sctp_assocs_seq_start(struct seq_file *seq, loff_t *pos)
 {
-       if (*pos > sctp_assoc_hashsize)
+       if (*pos >= sctp_assoc_hashsize)
                return NULL;
 
        if (*pos < 0)
                seq_printf(seq, " ASSOC     SOCK   STY SST ST HBKT ASSOC-ID TX_QUEUE RX_QUEUE UID INODE LPORT "
                                "RPORT LADDRS <-> RADDRS\n");
 
-       ++*pos;
-
        return (void *)pos;
 }
 
 
 static void * sctp_assocs_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 {
-       if (*pos > sctp_assoc_hashsize)
+       if (++*pos >= sctp_assoc_hashsize)
                return NULL;
 
-       ++*pos;
-
        return pos;
 }
 
        struct sock *sk;
        int    hash = *(int *)v;
 
-       if (hash > sctp_assoc_hashsize)
+       if (hash >= sctp_assoc_hashsize)
                return -ENOMEM;
 
-       head = &sctp_assoc_hashtable[hash-1];
+       head = &sctp_assoc_hashtable[hash];
        sctp_local_bh_disable();
        read_lock(&head->lock);
        for (epb = head->chain; epb; epb = epb->next) {
                seq_printf(seq,
                           "%8p %8p %-3d %-3d %-2d %-4d %4d %8d %8d %7d %5lu %-5d %5d ",
                           assoc, sk, sctp_sk(sk)->type, sk->sk_state,
-                          assoc->state, hash-1, assoc->assoc_id,
+                          assoc->state, hash, assoc->assoc_id,
                           (sk->sk_rcvbuf - assoc->rwnd),
                           assoc->sndbuf_used,
                           sock_i_uid(sk), sock_i_ino(sk),