From: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> Date: Thu, 27 Jun 2019 19:48:10 -0300 > It allocates the extended area for outbound streams only on sendmsg > calls, if they are not yet allocated. When using the priority > stream scheduler, this initialization may imply into a subsequent > allocation, which may fail. In this case, it was aborting the stream > scheduler initialization but leaving the ->ext pointer (allocated) in > there, thus in a partially initialized state. On a subsequent call to > sendmsg, it would notice the ->ext pointer in there, and trip on > uninitialized stuff when trying to schedule the data chunk. > > The fix is undo the ->ext initialization if the stream scheduler > initialization fails and avoid the partially initialized state. > > Although syzkaller bisected this to commit 4ff40b86262b ("sctp: set > chunk transport correctly when it's a new asoc"), this bug was actually > introduced on the commit I marked below. > > Reported-by: syzbot+c1a380d42b190ad1e559@xxxxxxxxxxxxxxxxxxxxxxxxx > Fixes: 5bbbbe32a431 ("sctp: introduce stream scheduler foundations") > Tested-by: Xin Long <lucien.xin@xxxxxxxxx> > Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> Applied and queued up for -stable, thanks.