Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1585696

Re: [PATCH 4.4 14/20] sctp: avoid BUG_ON on sctp_wait_for_sndbuf

From Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Newsgroups linux.kernel
Subject Re: [PATCH 4.4 14/20] sctp: avoid BUG_ON on sctp_wait_for_sndbuf
Date 2017-02-21 21:00 +0100
Message-ID <tdoLo-78e-15@gated-at.bofh.it> (permalink)
References <tbyvw-1iO-3@gated-at.bofh.it> <tbyFb-1Cv-13@gated-at.bofh.it> <tdlaN-4Vr-1@gated-at.bofh.it> <tdlXc-5cZ-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Tue, Feb 21, 2017 at 1:56 PM, Marcelo <marcelo.leitner@gmail.com> wrote:
>
>
> Em 21 de fevereiro de 2017 13:08:44 BRT, Ben Hutchings <ben@decadent.org.uk> escreveu:
>>On Thu, 2017-02-16 at 09:53 -0800, Greg Kroah-Hartman wrote:
>>> 4.4-stable review patch.  If anyone has any objections, please let me
>>know.
>>>
>>> ------------------
>>>
>>> From: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
>>>
>>>
>>> [ Upstream commit 2dcab598484185dea7ec22219c76dcdd59e3cb90 ]
>>[...]
>>> --- a/net/sctp/socket.c
>>> +++ b/net/sctp/socket.c
>>> @@ -6960,7 +6960,8 @@ static int sctp_wait_for_sndbuf(struct s
>>>               */
>>>              release_sock(sk);
>>>              current_timeo = schedule_timeout(current_timeo);
>>> -            BUG_ON(sk != asoc->base.sk);
>>> +            if (sk != asoc->base.sk)
>>> +                    goto do_error;
>>
>>This function normally returns with sk still locked, but in this case
>>it returns with sk unlocked.  Perhaps this check should be moved after
>>the lock_sock(sk)?
>>
>
> Looks like so. Will check more in a few. Thanks Ben

Yes, we need to move the check to after the lock_sock(sk) call.

There is also another problem: consider a thread A sending a packet to
a new asoc (which creates a new asoc during sctp_sendsmg), and while
waiting for more sndbuf space, it gets peeled off by another thread.
This would cause a double-free of the asoc as sctp_sendmsg() will free
this asoc thinking it errored out but it actually now belongs to
another thread.

Testing both patches now, should be ready by tomorrow.

  Marcelo

>
>>Ben.
>>
>>>              lock_sock(sk);
>>>
>>>              *timeo_p = current_timeo;
>>>
>>>
>
> --
> Enviado de meu dispositivo Android com K-9 mail. Desculpe-me pela brevidade.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 4.4 00/20] 4.4.50-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:00 +0100
  [PATCH 4.4 07/20] netlabel: out of bound access in cipso_v4_validate() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 13/20] mlx4: Invoke softirqs after napi_reschedule Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 14/20] sctp: avoid BUG_ON on sctp_wait_for_sndbuf Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
    Re: [PATCH 4.4 14/20] sctp: avoid BUG_ON on sctp_wait_for_sndbuf Ben Hutchings <ben@decadent.org.uk> - 2017-02-21 17:10 +0100
      Re: [PATCH 4.4 14/20] sctp: avoid BUG_ON on sctp_wait_for_sndbuf Marcelo <marcelo.leitner@gmail.com> - 2017-02-21 18:00 +0100
        Re: [PATCH 4.4 14/20] sctp: avoid BUG_ON on sctp_wait_for_sndbuf Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> - 2017-02-21 21:00 +0100
  [PATCH 4.4 03/20] ipv6: pointer math error in ip6_tnl_parse_tlv_enc_lim() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 02/20] ipv6: fix ip6_tnl_parse_tlv_enc_lim() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 09/20] ipv6: tcp: add a missing tcp_v6_restore_cb() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 01/20] can: Fix kernel panic at security_sock_rcv_skb Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 04/20] tcp: fix 0 divide in __tcp_select_window() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 19/20] l2tp: do not use udp_ioctl() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 08/20] ip6_gre: fix ip6gre_err() invalid reads Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 20/20] tcp: fix mark propagation with fwmark_reflect enabled Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 17/20] packet: round up linear to header len Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:10 +0100
  [PATCH 4.4 11/20] tun: read vnet_hdr_sz once Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-16 19:20 +0100
  Re: [PATCH 4.4 00/20] 4.4.50-stable review Guenter Roeck <linux@roeck-us.net> - 2017-02-17 11:40 +0100
  Re: [PATCH 4.4 00/20] 4.4.50-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-02-18 00:50 +0100

csiph-web