[SCTP]: Fix sctp_assoc_seq_show() panics on big-endian systems.
Vlad Yasevich [Tue, 17 Jan 2006 19:54:06 +0000 (11:54 -0800)]
This patch corrects the panic by casting the argument to the
pointer of correct size.  On big-endian systems we ended up loading
only 32 bits of data because we are treating the pointer as an int*.
By treating this pointer as loff_t*, we'll load the full 64 bits
and then let regular integer demotion take place which will give us
the correct value.

Signed-off-by: Vlad Yaseivch <vladislav.yasevich@hp.com>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>

net/sctp/proc.c

index 1b5e5b1..d47a52c 100644 (file)
@@ -210,7 +210,7 @@ static int sctp_eps_seq_show(struct seq_file *seq, void *v)
        struct sctp_ep_common *epb;
        struct sctp_endpoint *ep;
        struct sock *sk;
-       int    hash = *(int *)v;
+       int    hash = *(loff_t *)v;
 
        if (hash >= sctp_ep_hashsize)
                return -ENOMEM;
@@ -313,7 +313,7 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v)
        struct sctp_ep_common *epb;
        struct sctp_association *assoc;
        struct sock *sk;
-       int    hash = *(int *)v;
+       int    hash = *(loff_t *)v;
 
        if (hash >= sctp_assoc_hashsize)
                return -ENOMEM;