]> err.no Git - linux-2.6/blobdiff - net/sctp/transport.c
[PATCH] fix BUG_ON(!PageSlab) from fallback_alloc
[linux-2.6] / net / sctp / transport.c
index 74faa1b6dbfe3572b397eccdce4d19b3cf82a400..3e5936a5f671db698f560e65b4f5761ad3edd579 100644 (file)
@@ -62,13 +62,11 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
 {
        /* Copy in the address.  */
        peer->ipaddr = *addr;
-       flip_to_h(&peer->ipaddr_h, &peer->ipaddr);
        peer->af_specific = sctp_get_af_specific(addr->sa.sa_family);
        peer->asoc = NULL;
 
        peer->dst = NULL;
        memset(&peer->saddr, 0, sizeof(union sctp_addr));
-       memset(&peer->saddr_h, 0, sizeof(union sctp_addr));
 
        /* From 6.3.1 RTO Calculation:
         *
@@ -234,7 +232,7 @@ void sctp_transport_pmtu(struct sctp_transport *transport)
 {
        struct dst_entry *dst;
 
-       dst = transport->af_specific->get_dst(NULL, &transport->ipaddr_h, NULL);
+       dst = transport->af_specific->get_dst(NULL, &transport->ipaddr, NULL);
 
        if (dst) {
                transport->pathmtu = dst_mtu(dst);
@@ -251,18 +249,15 @@ void sctp_transport_route(struct sctp_transport *transport,
 {
        struct sctp_association *asoc = transport->asoc;
        struct sctp_af *af = transport->af_specific;
-       union sctp_addr *daddr = &transport->ipaddr_h;
+       union sctp_addr *daddr = &transport->ipaddr;
        struct dst_entry *dst;
 
        dst = af->get_dst(asoc, daddr, saddr);
 
-       if (saddr) {
-               memcpy(&transport->saddr_h, saddr, sizeof(union sctp_addr));
-               flip_to_n(&transport->saddr, &transport->saddr_h);
-       } else {
-               af->get_saddr(asoc, dst, &transport->ipaddr, &transport->saddr);
-               flip_to_h(&transport->saddr_h, &transport->saddr);
-       }
+       if (saddr)
+               memcpy(&transport->saddr, saddr, sizeof(union sctp_addr));
+       else
+               af->get_saddr(asoc, dst, daddr, &transport->saddr);
 
        transport->dst = dst;
        if ((transport->param_flags & SPP_PMTUD_DISABLE) && transport->pathmtu) {
@@ -275,7 +270,7 @@ void sctp_transport_route(struct sctp_transport *transport,
                 * association's active path for getsockname().
                 */ 
                if (asoc && (transport == asoc->peer.active_path))
-                       opt->pf->af->to_sk_saddr(&transport->saddr_h,
+                       opt->pf->af->to_sk_saddr(&transport->saddr,
                                                 asoc->base.sk);
        } else
                transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT;