From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B913C282D8 for ; Fri, 1 Feb 2019 14:58:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E8AA2218AC for ; Fri, 1 Feb 2019 14:58:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OHNcE0v9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729884AbfBAO6p (ORCPT ); Fri, 1 Feb 2019 09:58:45 -0500 Received: from mail-qk1-f195.google.com ([209.85.222.195]:45415 "EHLO mail-qk1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726446AbfBAO6p (ORCPT ); Fri, 1 Feb 2019 09:58:45 -0500 Received: by mail-qk1-f195.google.com with SMTP id y78so4163025qka.12; Fri, 01 Feb 2019 06:58:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=IDF8wNu5/9Kvu1X3U1tJb403QIkvJzcAopwzM6jg874=; b=OHNcE0v9gItN1Qn4nyR/6AQCF83nJYEt3qS3g10X04ZXF4TotsAB5nwfQy6sYUSpV8 /gju56ijkbhmradh+WMCnCW6+wRTDkqFq6LIp7KPyrt0tvlWnl9qljI7v9cTKhC67UlA TLIw3O4TwKI/P4oRRUXF57tMc3C2Ci5bCmWdyaRPjeCf/x+3MtaMPrJDQrL7F1SNfMDj +6NjarYNwYakaQxuFoSdGcik3lYQuyW/CiQqX7N2cz7rgsuATRDzSob7f6QM4z+jgMvm NTO/mVWHP0NKQFcfQO3A7hZOLBBrwsmbhKy0S/O4wu91zg9kfkHilTayJ1YrTcQL5Z4w wlsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=IDF8wNu5/9Kvu1X3U1tJb403QIkvJzcAopwzM6jg874=; b=b2GRlgSI1ASj6hTjtdJDNNaeUAEchvJfsn9a/YXpZq+dK7KL+YX1mFqisFrcd14UvD 9H09B54HMyUueSsKvCtj/ReRTx6I5RIckBIncZ2JtcKnw/pUNNXvyYdsJS/vnErr3vpM 80yM7x9SdRacrUjMDTlAXxmKQfFeoDNgucFBk49i6nM/S/xQKW1xykQY5g/QlxuZleCa 44JEHvzYERqNwYeV2DWH/NIikOHa50rBSWCJYiAO6xUE4upB0av/lEiJrXxZjqeZmK7W zSOw9dPaazC+L9A4ayVwwsP4V/7oTkBiAWzHLUmfTnPNMpsy3spvt6y3pRLWP2itnpTa y3pg== X-Gm-Message-State: AJcUukemwSwRzoUo7OL9moyf6mmzOKhDGSR3L9vc/eqGw0Hs4z1jCXEn fiKEmBqtPT3Pv9WuHFW8Mdc= X-Google-Smtp-Source: ALg8bN7zexPNyEMr2+lNIDAZDFNEqbIJVosO7Uyqn0m4CC+5Y13pUt/i9+aCRJTyfCVaCh6cp8Tl8A== X-Received: by 2002:a37:5c43:: with SMTP id q64mr35052250qkb.329.1549033123847; Fri, 01 Feb 2019 06:58:43 -0800 (PST) Received: from localhost.localdomain ([2001:1284:f013:4fe6:ccd7:e943:6fb4:e972]) by smtp.gmail.com with ESMTPSA id c13sm5225913qkl.16.2019.02.01.06.58.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 01 Feb 2019 06:58:43 -0800 (PST) Received: by localhost.localdomain (Postfix, from userid 1000) id A5FA1180C41; Fri, 1 Feb 2019 12:58:40 -0200 (-02) Date: Fri, 1 Feb 2019 12:58:40 -0200 From: Marcelo Ricardo Leitner To: Greg Kroah-Hartman Cc: Vlad Yasevich , Neil Horman , linux-sctp@vger.kernel.org, netdev@vger.kernel.org, vuln@secunia.com Subject: Re: [PATCH net] sctp: walk the list of asoc safely Message-ID: <20190201145840.GD10521@localhost.localdomain> References: <20190201141522.GA20785@kroah.com> <20190201142037.GC10521@localhost.localdomain> <20190201144359.GA9864@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190201144359.GA9864@kroah.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Fri, Feb 01, 2019 at 03:43:59PM +0100, Greg Kroah-Hartman wrote: > On Fri, Feb 01, 2019 at 12:20:37PM -0200, Marcelo Ricardo Leitner wrote: > > On Fri, Feb 01, 2019 at 03:15:22PM +0100, Greg Kroah-Hartman wrote: > > > In sctp_sendmesg(), when walking the list of endpoint associations, the > > > association can be dropped from the list, making the list corrupt. > > > Properly handle this by using list_for_each_entry_safe() > > > > > > Fixes: 4910280503f3 ("sctp: add support for snd flag SCTP_SENDALL process in sendmsg") > > > Reported-by: Secunia Research > > > Tested-by: Secunia Research > > > Signed-off-by: Greg Kroah-Hartman > > > > > > diff --git a/net/sctp/socket.c b/net/sctp/socket.c > > > index f93c3cf9e567..65d6d04546ae 100644 > > > --- a/net/sctp/socket.c > > > +++ b/net/sctp/socket.c > > > @@ -2027,7 +2027,7 @@ static int sctp_sendmsg(struct sock *sk, struct msghdr *msg, size_t msg_len) > > > struct sctp_endpoint *ep = sctp_sk(sk)->ep; > > > struct sctp_transport *transport = NULL; > > > struct sctp_sndrcvinfo _sinfo, *sinfo; > > > - struct sctp_association *asoc; > > > + struct sctp_association *asoc, *tmp; > > > struct sctp_cmsgs cmsgs; > > > union sctp_addr *daddr; > > > bool new = false; > > > @@ -2053,7 +2053,7 @@ static int sctp_sendmsg(struct sock *sk, struct msghdr *msg, size_t msg_len) > > > > Extending the context here by 1 line: > > lock_sock(sk); > > > > > > /* SCTP_SENDALL process */ > > > if ((sflags & SCTP_SENDALL) && sctp_style(sk, UDP)) { > > > - list_for_each_entry(asoc, &ep->asocs, asocs) { > > > + list_for_each_entry_safe(asoc, tmp, &ep->asocs, asocs) { > > > > With the socket being locked by here, how can an asoc be removed > > while the list is being traversed? The socket lock should be > > protecting from it. > > What about when the SCTP_ABORT flag is set with SCTP_SENDALL at the same > time? > > :( Good point! Thanks. Acked-by: Marcelo Ricardo Leitner