diff options
Diffstat (limited to 'net')
| -rw-r--r-- | net/ipv4/ip_fragment.c | 2 | ||||
| -rw-r--r-- | net/sctp/outqueue.c | 10 | ||||
| -rw-r--r-- | net/sctp/sm_sideeffect.c | 1 | ||||
| -rw-r--r-- | net/sctp/transport.c | 5 | ||||
| -rw-r--r-- | net/sunrpc/addr.c | 18 |
5 files changed, 11 insertions, 25 deletions
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c index 575f9bd51ccd..d3fe10be7219 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c | |||
| @@ -563,7 +563,7 @@ out_oversize: | |||
| 563 | printk(KERN_INFO "Oversized IP packet from %pI4.\n", | 563 | printk(KERN_INFO "Oversized IP packet from %pI4.\n", |
| 564 | &qp->saddr); | 564 | &qp->saddr); |
| 565 | out_fail: | 565 | out_fail: |
| 566 | IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_REASMFAILS); | 566 | IP_INC_STATS_BH(net, IPSTATS_MIB_REASMFAILS); |
| 567 | return err; | 567 | return err; |
| 568 | } | 568 | } |
| 569 | 569 | ||
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index c9f20e28521b..23e5e97aa617 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
| @@ -423,16 +423,6 @@ void sctp_retransmit_mark(struct sctp_outq *q, | |||
| 423 | if ((reason == SCTP_RTXR_FAST_RTX && | 423 | if ((reason == SCTP_RTXR_FAST_RTX && |
| 424 | (chunk->fast_retransmit == SCTP_NEED_FRTX)) || | 424 | (chunk->fast_retransmit == SCTP_NEED_FRTX)) || |
| 425 | (reason != SCTP_RTXR_FAST_RTX && !chunk->tsn_gap_acked)) { | 425 | (reason != SCTP_RTXR_FAST_RTX && !chunk->tsn_gap_acked)) { |
| 426 | /* If this chunk was sent less then 1 rto ago, do not | ||
| 427 | * retransmit this chunk, but give the peer time | ||
| 428 | * to acknowlege it. Do this only when | ||
| 429 | * retransmitting due to T3 timeout. | ||
| 430 | */ | ||
| 431 | if (reason == SCTP_RTXR_T3_RTX && | ||
| 432 | time_before(jiffies, chunk->sent_at + | ||
| 433 | transport->last_rto)) | ||
| 434 | continue; | ||
| 435 | |||
| 436 | /* RFC 2960 6.2.1 Processing a Received SACK | 426 | /* RFC 2960 6.2.1 Processing a Received SACK |
| 437 | * | 427 | * |
| 438 | * C) Any time a DATA chunk is marked for | 428 | * C) Any time a DATA chunk is marked for |
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 8674d4919556..efa516b47e81 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
| @@ -480,7 +480,6 @@ static void sctp_do_8_2_transport_strike(struct sctp_association *asoc, | |||
| 480 | * that indicates that we have an outstanding HB. | 480 | * that indicates that we have an outstanding HB. |
| 481 | */ | 481 | */ |
| 482 | if (!is_hb || transport->hb_sent) { | 482 | if (!is_hb || transport->hb_sent) { |
| 483 | transport->last_rto = transport->rto; | ||
| 484 | transport->rto = min((transport->rto * 2), transport->asoc->rto_max); | 483 | transport->rto = min((transport->rto * 2), transport->asoc->rto_max); |
| 485 | } | 484 | } |
| 486 | } | 485 | } |
diff --git a/net/sctp/transport.c b/net/sctp/transport.c index 3b141bb32faf..37a1184d789f 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c | |||
| @@ -74,7 +74,7 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer, | |||
| 74 | * given destination transport address, set RTO to the protocol | 74 | * given destination transport address, set RTO to the protocol |
| 75 | * parameter 'RTO.Initial'. | 75 | * parameter 'RTO.Initial'. |
| 76 | */ | 76 | */ |
| 77 | peer->last_rto = peer->rto = msecs_to_jiffies(sctp_rto_initial); | 77 | peer->rto = msecs_to_jiffies(sctp_rto_initial); |
| 78 | peer->rtt = 0; | 78 | peer->rtt = 0; |
| 79 | peer->rttvar = 0; | 79 | peer->rttvar = 0; |
| 80 | peer->srtt = 0; | 80 | peer->srtt = 0; |
| @@ -386,7 +386,6 @@ void sctp_transport_update_rto(struct sctp_transport *tp, __u32 rtt) | |||
| 386 | tp->rto = tp->asoc->rto_max; | 386 | tp->rto = tp->asoc->rto_max; |
| 387 | 387 | ||
| 388 | tp->rtt = rtt; | 388 | tp->rtt = rtt; |
| 389 | tp->last_rto = tp->rto; | ||
| 390 | 389 | ||
| 391 | /* Reset rto_pending so that a new RTT measurement is started when a | 390 | /* Reset rto_pending so that a new RTT measurement is started when a |
| 392 | * new data chunk is sent. | 391 | * new data chunk is sent. |
| @@ -602,7 +601,7 @@ void sctp_transport_reset(struct sctp_transport *t) | |||
| 602 | */ | 601 | */ |
| 603 | t->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380)); | 602 | t->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380)); |
| 604 | t->ssthresh = asoc->peer.i.a_rwnd; | 603 | t->ssthresh = asoc->peer.i.a_rwnd; |
| 605 | t->last_rto = t->rto = asoc->rto_initial; | 604 | t->rto = asoc->rto_initial; |
| 606 | t->rtt = 0; | 605 | t->rtt = 0; |
| 607 | t->srtt = 0; | 606 | t->srtt = 0; |
| 608 | t->rttvar = 0; | 607 | t->rttvar = 0; |
diff --git a/net/sunrpc/addr.c b/net/sunrpc/addr.c index 22e8fd89477f..c7450c8f0a7c 100644 --- a/net/sunrpc/addr.c +++ b/net/sunrpc/addr.c | |||
| @@ -306,24 +306,25 @@ EXPORT_SYMBOL_GPL(rpc_sockaddr2uaddr); | |||
| 306 | * @sap: buffer into which to plant socket address | 306 | * @sap: buffer into which to plant socket address |
| 307 | * @salen: size of buffer | 307 | * @salen: size of buffer |
| 308 | * | 308 | * |
| 309 | * @uaddr does not have to be '\0'-terminated, but strict_strtoul() and | ||
| 310 | * rpc_pton() require proper string termination to be successful. | ||
| 311 | * | ||
| 309 | * Returns the size of the socket address if successful; otherwise | 312 | * Returns the size of the socket address if successful; otherwise |
| 310 | * zero is returned. | 313 | * zero is returned. |
| 311 | */ | 314 | */ |
| 312 | size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len, | 315 | size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len, |
| 313 | struct sockaddr *sap, const size_t salen) | 316 | struct sockaddr *sap, const size_t salen) |
| 314 | { | 317 | { |
| 315 | char *c, buf[RPCBIND_MAXUADDRLEN]; | 318 | char *c, buf[RPCBIND_MAXUADDRLEN + sizeof('\0')]; |
| 316 | unsigned long portlo, porthi; | 319 | unsigned long portlo, porthi; |
| 317 | unsigned short port; | 320 | unsigned short port; |
| 318 | 321 | ||
| 319 | if (uaddr_len > sizeof(buf)) | 322 | if (uaddr_len > RPCBIND_MAXUADDRLEN) |
| 320 | return 0; | 323 | return 0; |
| 321 | 324 | ||
| 322 | memcpy(buf, uaddr, uaddr_len); | 325 | memcpy(buf, uaddr, uaddr_len); |
| 323 | 326 | ||
| 324 | buf[uaddr_len] = '\n'; | 327 | buf[uaddr_len] = '\0'; |
| 325 | buf[uaddr_len + 1] = '\0'; | ||
| 326 | |||
| 327 | c = strrchr(buf, '.'); | 328 | c = strrchr(buf, '.'); |
| 328 | if (unlikely(c == NULL)) | 329 | if (unlikely(c == NULL)) |
| 329 | return 0; | 330 | return 0; |
| @@ -332,9 +333,7 @@ size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len, | |||
| 332 | if (unlikely(portlo > 255)) | 333 | if (unlikely(portlo > 255)) |
| 333 | return 0; | 334 | return 0; |
| 334 | 335 | ||
| 335 | c[0] = '\n'; | 336 | *c = '\0'; |
| 336 | c[1] = '\0'; | ||
| 337 | |||
| 338 | c = strrchr(buf, '.'); | 337 | c = strrchr(buf, '.'); |
| 339 | if (unlikely(c == NULL)) | 338 | if (unlikely(c == NULL)) |
| 340 | return 0; | 339 | return 0; |
| @@ -345,8 +344,7 @@ size_t rpc_uaddr2sockaddr(const char *uaddr, const size_t uaddr_len, | |||
| 345 | 344 | ||
| 346 | port = (unsigned short)((porthi << 8) | portlo); | 345 | port = (unsigned short)((porthi << 8) | portlo); |
| 347 | 346 | ||
| 348 | c[0] = '\0'; | 347 | *c = '\0'; |
| 349 | |||
| 350 | if (rpc_pton(buf, strlen(buf), sap, salen) == 0) | 348 | if (rpc_pton(buf, strlen(buf), sap, salen) == 0) |
| 351 | return 0; | 349 | return 0; |
| 352 | 350 | ||
