public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Vlad Yasevich <vyasevich@gmail•com>
To: Marcelo Ricardo Leitner <marcelo.leitner@gmail•com>,
	netdev@vger•kernel.org
Cc: "Neil Horman" <nhorman@tuxdriver•com>,
	"Eric Dumazet" <eric.dumazet@gmail•com>,
	syzkaller <syzkaller@googlegroups•com>,
	linux-sctp@vger•kernel.org, "Kostya Serebryany" <kcc@google•com>,
	"Alexander Potapenko" <glider@google•com>,
	"Sasha Levin" <sasha.levin@oracle•com>,
	"Maciej Żenczykowski" <maze@google•com>,
	"Dmitry Vyukov" <dvyukov@google•com>
Subject: Re: [PATCH net 2/3] sctp: update the netstamp_needed counter when copying sockets
Date: Fri, 4 Dec 2015 15:33:01 -0500	[thread overview]
Message-ID: <5661F87D.40705@gmail.com> (raw)
In-Reply-To: <351c05ec8d79bdc03f38c021bb112d29908a6a5e.1449249050.git.marcelo.leitner@gmail.com>

On 12/04/2015 12:14 PM, Marcelo Ricardo Leitner wrote:
> Dmitry Vyukov reported that SCTP was triggering a WARN on socket destroy
> related to disabling sock timestamp.
> 
> When SCTP accepts an association or peel one off, it copies sock flags
> but forgot to call net_enable_timestamp() if a packet timestamping flag
> was copied, leading to extra calls to net_disable_timestamp() whenever
> such clones were closed.
> 
> The fix is to call net_enable_timestamp() whenever we copy a sock with
> that flag on, like tcp does.
> 
> Reported-by: Dmitry Vyukov <dvyukov@google•com>
> Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail•com>

Acked-by: Vlad Yasevich <vyasevich@gmail•com>

-vlad

> ---
>  include/net/sock.h | 2 ++
>  net/core/sock.c    | 2 --
>  net/sctp/socket.c  | 3 +++
>  3 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/include/net/sock.h b/include/net/sock.h
> index 52d27ee924f47867026d8f65c65551a9137219d3..b1d475b5db6825e13df3e3e147fed8654e1cf086 100644
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -740,6 +740,8 @@ enum sock_flags {
>  	SOCK_SELECT_ERR_QUEUE, /* Wake select on error queue */
>  };
>  
> +#define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE))
> +
>  static inline void sock_copy_flags(struct sock *nsk, struct sock *osk)
>  {
>  	nsk->sk_flags = osk->sk_flags;
> diff --git a/net/core/sock.c b/net/core/sock.c
> index e31dfcee1729aa23bdd2ed692fda1b90bd75afb8..d01c8f42dbb2f040fd48009b2767bd4e80aea8ab 100644
> --- a/net/core/sock.c
> +++ b/net/core/sock.c
> @@ -433,8 +433,6 @@ static bool sock_needs_netstamp(const struct sock *sk)
>  	}
>  }
>  
> -#define SK_FLAGS_TIMESTAMP ((1UL << SOCK_TIMESTAMP) | (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE))
> -
>  static void sock_disable_timestamp(struct sock *sk, unsigned long flags)
>  {
>  	if (sk->sk_flags & flags) {
> diff --git a/net/sctp/socket.c b/net/sctp/socket.c
> index 03c8256063ec6355fcce034366aa5d005d75b5f7..4c9282bdd06790a0cca7f7c33986e7eb6c541398 100644
> --- a/net/sctp/socket.c
> +++ b/net/sctp/socket.c
> @@ -7199,6 +7199,9 @@ void sctp_copy_sock(struct sock *newsk, struct sock *sk,
>  	newinet->mc_ttl = 1;
>  	newinet->mc_index = 0;
>  	newinet->mc_list = NULL;
> +
> +	if (newsk->sk_flags & SK_FLAGS_TIMESTAMP)
> +		net_enable_timestamp();
>  }
>  
>  static inline void sctp_copy_descendant(struct sock *sk_to,
> 

  reply	other threads:[~2015-12-04 20:33 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-24  9:15 use-after-free in sctp_do_sm Dmitry Vyukov
2015-11-24  9:31 ` Dmitry Vyukov
2015-11-24 10:10   ` Dmitry Vyukov
2015-11-24 20:45     ` Neil Horman
2015-11-24 21:08       ` Eric Dumazet
2015-11-24 21:12       ` David Miller
2015-11-25 15:12       ` Vlad Yasevich
2015-11-28 15:50         ` Dmitry Vyukov
2015-12-03 16:51           ` Marcelo Ricardo Leitner
2015-12-03 17:43             ` Marcelo Ricardo Leitner
2015-12-03 17:59               ` Eric Dumazet
2015-12-03 18:06                 ` Marcelo
2015-12-03 18:35                   ` Vlad Yasevich
2015-12-03 18:43                     ` Marcelo
2015-12-04 17:14                       ` [PATCH net 0/3] sctp: packet timestamp fixes Marcelo Ricardo Leitner
2015-12-04 17:14                         ` [PATCH net 1/3] sctp: use the same clock as if sock source timestamps were on Marcelo Ricardo Leitner
2015-12-04 20:31                           ` Vlad Yasevich
2015-12-04 17:14                         ` [PATCH net 2/3] sctp: update the netstamp_needed counter when copying sockets Marcelo Ricardo Leitner
2015-12-04 20:33                           ` Vlad Yasevich [this message]
2015-12-04 17:14                         ` [PATCH net 3/3] sctp: also copy sk_tsflags when copying the socket Marcelo Ricardo Leitner
2015-12-04 20:33                           ` Vlad Yasevich
2015-12-06  3:24                         ` [PATCH net 0/3] sctp: packet timestamp fixes David Miller
2015-12-03 13:05 ` use-after-free in sctp_do_sm Marcelo Ricardo Leitner
2015-12-03 13:45   ` Dmitry Vyukov
2015-12-03 14:48     ` Eric Dumazet
2015-12-03 15:55       ` Dmitry Vyukov
2015-12-03 16:15         ` Marcelo Ricardo Leitner
2015-12-03 17:02         ` Eric Dumazet
2015-12-03 17:12           ` Dmitry Vyukov
2015-12-03 18:52             ` Aaron Conole
2015-12-03 19:06               ` Joe Perches
2015-12-03 19:32               ` Jason Baron
2015-12-03 20:03                 ` Joe Perches
2015-12-03 20:10                   ` Jason Baron
2015-12-03 20:24                     ` Joe Perches
2015-12-03 20:42                       ` Jason Baron
2015-12-03 20:51                         ` Joe Perches
2015-12-04 10:40                           ` Dmitry Vyukov
2015-12-04 12:55                             ` Marcelo Ricardo Leitner
2015-12-04 15:37                               ` Vlad Yasevich
2015-12-04 15:51                                 ` Aaron Conole
2015-12-04 16:12                           ` Dmitry Vyukov
2015-12-04 16:47                             ` Jason Baron
2015-12-04 17:03                               ` Joe Perches
2015-12-04 17:11                                 ` Jason Baron
2015-12-04 10:41           ` Dmitry Vyukov
2015-12-04 17:48     ` Marcelo Ricardo Leitner
2015-12-04 20:25       ` Dmitry Vyukov
2015-12-04 21:34         ` Marcelo Ricardo Leitner
2015-12-04 21:38           ` Dmitry Vyukov
2015-12-05 16:39           ` Vlad Yasevich
2015-12-07 11:26             ` Dmitry Vyukov
2015-12-07 13:15               ` Marcelo Ricardo Leitner
2015-12-07 13:20                 ` Dmitry Vyukov
2015-12-07 18:52                   ` Marcelo Ricardo Leitner
2015-12-07 19:33                     ` Vlad Yasevich
2015-12-07 19:50                       ` Marcelo Ricardo Leitner
2015-12-07 20:37                         ` Vlad Yasevich
2015-12-07 20:52                           ` Marcelo Ricardo Leitner
2015-12-08 17:30                             ` Dmitry Vyukov
2015-12-08 17:40                               ` Marcelo Ricardo Leitner
2015-12-08 19:22                                 ` Dmitry Vyukov
2015-12-09 14:41                                   ` Dmitry Vyukov
2015-12-09 15:03                                     ` Marcelo Ricardo Leitner
2015-12-09 16:41                                       ` Marcelo Ricardo Leitner
2015-12-11 13:35                                         ` Dmitry Vyukov
2015-12-11 13:51                                           ` Marcelo Ricardo Leitner
2015-12-11 14:03                                             ` Marcelo Ricardo Leitner
2015-12-11 14:30                                               ` Dmitry Vyukov
2015-12-11 15:55                                                 ` Marcelo Ricardo Leitner
2016-01-08 13:00                                                   ` [PATCH] sctp: fix use-after-free in pr_debug statement Marcelo Ricardo Leitner
2016-01-11 17:00                                                     ` Vlad Yasevich
2016-01-11 22:13                                                     ` David Miller
2016-01-12  8:41                                                       ` Dmitry Vyukov
2015-12-11 18:37                                               ` use-after-free in sctp_do_sm Vlad Yasevich
2015-12-14  9:50                                                 ` David Laight
2015-12-14 14:25                                                   ` Vlad Yasevich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5661F87D.40705@gmail.com \
    --to=vyasevich@gmail$(echo .)com \
    --cc=dvyukov@google$(echo .)com \
    --cc=eric.dumazet@gmail$(echo .)com \
    --cc=glider@google$(echo .)com \
    --cc=kcc@google$(echo .)com \
    --cc=linux-sctp@vger$(echo .)kernel.org \
    --cc=marcelo.leitner@gmail$(echo .)com \
    --cc=maze@google$(echo .)com \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=nhorman@tuxdriver$(echo .)com \
    --cc=sasha.levin@oracle$(echo .)com \
    --cc=syzkaller@googlegroups$(echo .)com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox