Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
The MSCC bug fix in 'net' had to be slightly adjusted because the register accesses are done slightly differently in net-next. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1523,9 +1523,17 @@ static int sctp_cmd_interpreter(enum sctp_event_type event_type,
|
||||
timeout = asoc->timeouts[cmd->obj.to];
|
||||
BUG_ON(!timeout);
|
||||
|
||||
timer->expires = jiffies + timeout;
|
||||
sctp_association_hold(asoc);
|
||||
add_timer(timer);
|
||||
/*
|
||||
* SCTP has a hard time with timer starts. Because we process
|
||||
* timer starts as side effects, it can be hard to tell if we
|
||||
* have already started a timer or not, which leads to BUG
|
||||
* halts when we call add_timer. So here, instead of just starting
|
||||
* a timer, if the timer is already started, and just mod
|
||||
* the timer with the shorter of the two expiration times
|
||||
*/
|
||||
if (!timer_pending(timer))
|
||||
sctp_association_hold(asoc);
|
||||
timer_reduce(timer, jiffies + timeout);
|
||||
break;
|
||||
|
||||
case SCTP_CMD_TIMER_RESTART:
|
||||
|
@@ -1856,12 +1856,13 @@ static enum sctp_disposition sctp_sf_do_dupcook_a(
|
||||
/* Update the content of current association. */
|
||||
sctp_add_cmd_sf(commands, SCTP_CMD_UPDATE_ASSOC, SCTP_ASOC(new_asoc));
|
||||
sctp_add_cmd_sf(commands, SCTP_CMD_EVENT_ULP, SCTP_ULPEVENT(ev));
|
||||
if (sctp_state(asoc, SHUTDOWN_PENDING) &&
|
||||
if ((sctp_state(asoc, SHUTDOWN_PENDING) ||
|
||||
sctp_state(asoc, SHUTDOWN_SENT)) &&
|
||||
(sctp_sstate(asoc->base.sk, CLOSING) ||
|
||||
sock_flag(asoc->base.sk, SOCK_DEAD))) {
|
||||
/* if were currently in SHUTDOWN_PENDING, but the socket
|
||||
* has been closed by user, don't transition to ESTABLISHED.
|
||||
* Instead trigger SHUTDOWN bundled with COOKIE_ACK.
|
||||
/* If the socket has been closed by user, don't
|
||||
* transition to ESTABLISHED. Instead trigger SHUTDOWN
|
||||
* bundled with COOKIE_ACK.
|
||||
*/
|
||||
sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(repl));
|
||||
return sctp_sf_do_9_2_start_shutdown(net, ep, asoc,
|
||||
|
Reference in New Issue
Block a user