浏览代码

[SCTP]: Fix sctp_assoc_seq_show() panics on big-endian systems.

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>
Vlad Yasevich 19 年之前
父节点
当前提交
38b0e42aba
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      net/sctp/proc.c

+ 2 - 2
net/sctp/proc.c

@@ -210,7 +210,7 @@ static int sctp_eps_seq_show(struct seq_file *seq, void *v)
 	struct sctp_ep_common *epb;
 	struct sctp_ep_common *epb;
 	struct sctp_endpoint *ep;
 	struct sctp_endpoint *ep;
 	struct sock *sk;
 	struct sock *sk;
-	int    hash = *(int *)v;
+	int    hash = *(loff_t *)v;
 
 
 	if (hash >= sctp_ep_hashsize)
 	if (hash >= sctp_ep_hashsize)
 		return -ENOMEM;
 		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_ep_common *epb;
 	struct sctp_association *assoc;
 	struct sctp_association *assoc;
 	struct sock *sk;
 	struct sock *sk;
-	int    hash = *(int *)v;
+	int    hash = *(loff_t *)v;
 
 
 	if (hash >= sctp_assoc_hashsize)
 	if (hash >= sctp_assoc_hashsize)
 		return -ENOMEM;
 		return -ENOMEM;