Re: [PATCH net] sctp: set chunk transport correctly when it's a new asoc

From: David Miller
Date: Thu Jan 24 2019 - 21:25:35 EST


From: Xin Long <lucien.xin@xxxxxxxxx>
Date: Tue, 22 Jan 2019 02:42:09 +0800

> In the paths:
>
> sctp_sf_do_unexpected_init() ->
> sctp_make_init_ack()
> sctp_sf_do_dupcook_a/b()() ->
> sctp_sf_do_5_1D_ce()
>
> The new chunk 'retval' transport is set from the incoming chunk 'chunk'
> transport. However, 'retval' transport belong to the new asoc, which
> is a different one from 'chunk' transport's asoc.
>
> It will cause that the 'retval' chunk gets set with a wrong transport.
> Later when sending it and because of Commit b9fd683982c9 ("sctp: add
> sctp_packet_singleton"), sctp_packet_singleton() will set some fields,
> like vtag to 'retval' chunk from that wrong transport's asoc.
>
> This patch is to fix it by setting 'retval' transport correctly which
> belongs to the right asoc in sctp_make_init_ack() and
> sctp_sf_do_5_1D_ce().
>
> Fixes: b9fd683982c9 ("sctp: add sctp_packet_singleton")
> Reported-by: Ying Xu <yinxu@xxxxxxxxxx>
> Signed-off-by: Xin Long <lucien.xin@xxxxxxxxx>

Applied and queued up for -stable.