[patch 19/37] SCTP: Fix sctp_primitive_ABORT() call in sctp_close().

Greg KH
2006-09-06T23:08:54Z

[-- Attachment #1: sctp-fix-sctp_primitive_abort-call-in-sctp_close.patch --]
[-- Type: text/plain, Size: 1008 bytes --]

-stable review patch. If anyone has any objections, please let us know.

------------------
From: Sridhar Samudrala <sri@us.ibm.com>

With the recent fix, the callers of sctp_primitive_ABORT()
need to create an ABORT chunk and pass it as an argument rather
than msghdr that was passed earlier.

Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

---
net/sctp/socket.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

--- linux-2.6.17.11.orig/net/sctp/socket.c
+++ linux-2.6.17.11/net/sctp/socket.c
@@ -1246,9 +1246,13 @@ SCTP_STATIC void sctp_close(struct sock
}
}

- if (sock_flag(sk, SOCK_LINGER) && !sk->sk_lingertime)
- sctp_primitive_ABORT(asoc, NULL);
- else
+ if (sock_flag(sk, SOCK_LINGER) && !sk->sk_lingertime) {
+ struct sctp_chunk *chunk;
+
+ chunk = sctp_make_abort_user(asoc, NULL, 0);
+ if (chunk)
+ sctp_primitive_ABORT(asoc, chunk);
+ } else
sctp_primitive_SHUTDOWN(asoc, NULL);
}

--