From: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> Date: Thu, 23 Feb 2017 09:31:18 -0300 > commit 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf") > attempted to avoid a BUG_ON call when the association being used for a > sendmsg() is blocked waiting for more sndbuf and another thread did a > peeloff operation on such asoc, moving it to another socket. > > As Ben Hutchings noticed, then in such case it would return without > locking back the socket and would cause two unlocks in a row. > > Further analysis also revealed that it could allow a double free if the > application managed to peeloff the asoc that is created during the > sendmsg call, because then sctp_sendmsg() would try to free the asoc > that was created only for that call. > > This patch takes another approach. It will deny the peeloff operation > if there is a thread sleeping on the asoc, so this situation doesn't > exist anymore. This avoids the issues described above and also honors > the syscalls that are already being handled (it can be multiple sendmsg > calls). > > Joint work with Xin Long. > > Fixes: 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf") > Cc: Alexander Popov <alex.popov@xxxxxxxxx> > Cc: Ben Hutchings <ben@xxxxxxxxxxxxxxx> > Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> > Signed-off-by: Xin Long <lucien.xin@xxxxxxxxx> > --- > Hi, please consider this one for -stable too. Thanks Applied and queued up for -stable, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-sctp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html