diff options
author | Reshetova, Elena <elena.reshetova@intel.com> | 2017-06-30 06:07:58 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-07-01 10:39:07 -0400 |
commit | 633547973ffc32fd2c815639d4675e1531f0896f (patch) | |
tree | 751ca7a379366af93f578d9f35f48339d4d2dd9b /net/sctp/outqueue.c | |
parent | 53869cebce4bc53f71a080e7830600d4ae1ab712 (diff) |
net: convert sk_buff.users from atomic_t to refcount_t
refcount_t type and corresponding API should be
used instead of atomic_t when the variable is used as
a reference counter. This allows to avoid accidental
refcounter overflows that might lead to use-after-free
situations.
Signed-off-by: Elena Reshetova <elena.reshetova@intel.com>
Signed-off-by: Hans Liljestrand <ishkamiel@gmail.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David Windsor <dwindsor@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/outqueue.c')
-rw-r--r-- | net/sctp/outqueue.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 20299df163b9..e8762702a313 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
@@ -1102,7 +1102,7 @@ static void sctp_outq_flush(struct sctp_outq *q, int rtx_timeout, gfp_t gfp) | |||
1102 | sctp_cname(SCTP_ST_CHUNK(chunk->chunk_hdr->type)) : | 1102 | sctp_cname(SCTP_ST_CHUNK(chunk->chunk_hdr->type)) : |
1103 | "illegal chunk", ntohl(chunk->subh.data_hdr->tsn), | 1103 | "illegal chunk", ntohl(chunk->subh.data_hdr->tsn), |
1104 | chunk->skb ? chunk->skb->head : NULL, chunk->skb ? | 1104 | chunk->skb ? chunk->skb->head : NULL, chunk->skb ? |
1105 | atomic_read(&chunk->skb->users) : -1); | 1105 | refcount_read(&chunk->skb->users) : -1); |
1106 | 1106 | ||
1107 | /* Add the chunk to the packet. */ | 1107 | /* Add the chunk to the packet. */ |
1108 | status = sctp_packet_transmit_chunk(packet, chunk, 0, gfp); | 1108 | status = sctp_packet_transmit_chunk(packet, chunk, 0, gfp); |