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, >
WARNING: multiple messages have this Message-ID (diff)
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, 04 Dec 2015 20:33:01 +0000 [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, >
next prev parent reply other threads:[~2015-12-04 20:33 UTC|newest] Thread overview: 153+ 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:15 ` Dmitry Vyukov 2015-11-24 9:31 ` Dmitry Vyukov 2015-11-24 9:31 ` Dmitry Vyukov 2015-11-24 10:10 ` Dmitry Vyukov 2015-11-24 10:10 ` Dmitry Vyukov 2015-11-24 20:45 ` Neil Horman 2015-11-24 20:45 ` Neil Horman 2015-11-24 21:08 ` Eric Dumazet 2015-11-24 21:08 ` Eric Dumazet 2015-11-24 21:12 ` David Miller 2015-11-24 21:12 ` David Miller 2015-11-25 15:12 ` Vlad Yasevich 2015-11-25 15:12 ` Vlad Yasevich 2015-11-28 15:50 ` Dmitry Vyukov 2015-11-28 15:50 ` Dmitry Vyukov 2015-12-03 16:51 ` Marcelo Ricardo Leitner 2015-12-03 16:51 ` Marcelo Ricardo Leitner 2015-12-03 17:43 ` Marcelo Ricardo Leitner 2015-12-03 17:43 ` Marcelo Ricardo Leitner 2015-12-03 17:59 ` Eric Dumazet 2015-12-03 17:59 ` Eric Dumazet 2015-12-03 18:06 ` Marcelo 2015-12-03 18:06 ` Marcelo 2015-12-03 18:35 ` Vlad Yasevich 2015-12-03 18:35 ` Vlad Yasevich 2015-12-03 18:43 ` Marcelo 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 ` 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 17:14 ` Marcelo Ricardo Leitner 2015-12-04 20:31 ` Vlad Yasevich 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 17:14 ` Marcelo Ricardo Leitner 2015-12-04 20:33 ` Vlad Yasevich [this message] 2015-12-04 20:33 ` Vlad Yasevich 2015-12-04 17:14 ` [PATCH net 3/3] sctp: also copy sk_tsflags when copying the socket Marcelo Ricardo Leitner 2015-12-04 17:14 ` Marcelo Ricardo Leitner 2015-12-04 20:33 ` Vlad Yasevich 2015-12-04 20:33 ` Vlad Yasevich 2015-12-06 3:24 ` [PATCH net 0/3] sctp: packet timestamp fixes David Miller 2015-12-06 3:24 ` David Miller 2015-12-03 13:05 ` use-after-free in sctp_do_sm Marcelo Ricardo Leitner 2015-12-03 13:05 ` Marcelo Ricardo Leitner 2015-12-03 13:45 ` Dmitry Vyukov 2015-12-03 13:45 ` Dmitry Vyukov 2015-12-03 14:48 ` Eric Dumazet 2015-12-03 14:48 ` Eric Dumazet 2015-12-03 15:55 ` Dmitry Vyukov 2015-12-03 15:55 ` Dmitry Vyukov 2015-12-03 16:15 ` Marcelo Ricardo Leitner 2015-12-03 16:15 ` Marcelo Ricardo Leitner 2015-12-03 17:02 ` Eric Dumazet 2015-12-03 17:02 ` Eric Dumazet 2015-12-03 17:12 ` Dmitry Vyukov 2015-12-03 17:12 ` Dmitry Vyukov 2015-12-03 18:52 ` Aaron Conole 2015-12-03 18:52 ` Aaron Conole 2015-12-03 19:06 ` Joe Perches 2015-12-03 19:06 ` Joe Perches 2015-12-03 19:32 ` Jason Baron 2015-12-03 19:32 ` Jason Baron 2015-12-03 20:03 ` Joe Perches 2015-12-03 20:03 ` Joe Perches 2015-12-03 20:10 ` Jason Baron 2015-12-03 20:10 ` Jason Baron 2015-12-03 20:24 ` Joe Perches 2015-12-03 20:24 ` Joe Perches 2015-12-03 20:42 ` Jason Baron 2015-12-03 20:42 ` Jason Baron 2015-12-03 20:51 ` Joe Perches 2015-12-03 20:51 ` Joe Perches 2015-12-04 10:40 ` Dmitry Vyukov 2015-12-04 10:40 ` Dmitry Vyukov 2015-12-04 12:55 ` Marcelo Ricardo Leitner 2015-12-04 12:55 ` Marcelo Ricardo Leitner 2015-12-04 15:37 ` Vlad Yasevich 2015-12-04 15:37 ` Vlad Yasevich 2015-12-04 15:51 ` Aaron Conole 2015-12-04 15:51 ` Aaron Conole 2015-12-04 16:12 ` Dmitry Vyukov 2015-12-04 16:12 ` Dmitry Vyukov 2015-12-04 16:47 ` Jason Baron 2015-12-04 16:47 ` Jason Baron 2015-12-04 17:03 ` Joe Perches 2015-12-04 17:03 ` Joe Perches 2015-12-04 17:11 ` Jason Baron 2015-12-04 17:11 ` Jason Baron 2015-12-04 10:41 ` Dmitry Vyukov 2015-12-04 10:41 ` Dmitry Vyukov 2015-12-04 17:48 ` Marcelo Ricardo Leitner 2015-12-04 17:48 ` Marcelo Ricardo Leitner 2015-12-04 20:25 ` Dmitry Vyukov 2015-12-04 20:25 ` Dmitry Vyukov 2015-12-04 21:34 ` Marcelo Ricardo Leitner 2015-12-04 21:34 ` Marcelo Ricardo Leitner 2015-12-04 21:38 ` Dmitry Vyukov 2015-12-04 21:38 ` Dmitry Vyukov 2015-12-05 16:39 ` Vlad Yasevich 2015-12-05 16:39 ` Vlad Yasevich 2015-12-07 11:26 ` Dmitry Vyukov 2015-12-07 11:26 ` Dmitry Vyukov 2015-12-07 13:15 ` Marcelo Ricardo Leitner 2015-12-07 13:15 ` Marcelo Ricardo Leitner 2015-12-07 13:20 ` Dmitry Vyukov 2015-12-07 13:20 ` Dmitry Vyukov 2015-12-07 18:52 ` Marcelo Ricardo Leitner 2015-12-07 18:52 ` Marcelo Ricardo Leitner 2015-12-07 19:33 ` Vlad Yasevich 2015-12-07 19:33 ` Vlad Yasevich 2015-12-07 19:50 ` Marcelo Ricardo Leitner 2015-12-07 19:50 ` Marcelo Ricardo Leitner 2015-12-07 20:37 ` Vlad Yasevich 2015-12-07 20:37 ` Vlad Yasevich 2015-12-07 20:52 ` Marcelo Ricardo Leitner 2015-12-07 20:52 ` Marcelo Ricardo Leitner 2015-12-08 17:30 ` Dmitry Vyukov 2015-12-08 17:30 ` Dmitry Vyukov 2015-12-08 17:40 ` Marcelo Ricardo Leitner 2015-12-08 17:40 ` Marcelo Ricardo Leitner 2015-12-08 19:22 ` Dmitry Vyukov 2015-12-08 19:22 ` Dmitry Vyukov 2015-12-09 14:41 ` Dmitry Vyukov 2015-12-09 14:41 ` Dmitry Vyukov 2015-12-09 15:03 ` Marcelo Ricardo Leitner 2015-12-09 15:03 ` Marcelo Ricardo Leitner 2015-12-09 16:41 ` Marcelo Ricardo Leitner 2015-12-09 16:41 ` Marcelo Ricardo Leitner 2015-12-11 13:35 ` Dmitry Vyukov 2015-12-11 13:35 ` Dmitry Vyukov 2015-12-11 13:51 ` Marcelo Ricardo Leitner 2015-12-11 13:51 ` Marcelo Ricardo Leitner 2015-12-11 14:03 ` Marcelo Ricardo Leitner 2015-12-11 14:03 ` Marcelo Ricardo Leitner 2015-12-11 14:30 ` Dmitry Vyukov 2015-12-11 14:30 ` Dmitry Vyukov 2015-12-11 15:55 ` Marcelo Ricardo Leitner 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-08 13:00 ` Marcelo Ricardo Leitner 2016-01-11 17:00 ` Vlad Yasevich 2016-01-11 17:00 ` Vlad Yasevich 2016-01-11 22:13 ` David Miller 2016-01-11 22:13 ` David Miller 2016-01-12 8:41 ` Dmitry Vyukov 2016-01-12 8:41 ` Dmitry Vyukov 2015-12-11 18:37 ` use-after-free in sctp_do_sm Vlad Yasevich 2015-12-11 18:37 ` Vlad Yasevich 2015-12-14 9:50 ` David Laight 2015-12-14 14:25 ` Vlad Yasevich 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.com \ --cc=dvyukov@google.com \ --cc=eric.dumazet@gmail.com \ --cc=glider@google.com \ --cc=kcc@google.com \ --cc=linux-sctp@vger.kernel.org \ --cc=marcelo.leitner@gmail.com \ --cc=maze@google.com \ --cc=netdev@vger.kernel.org \ --cc=nhorman@tuxdriver.com \ --cc=sasha.levin@oracle.com \ --cc=syzkaller@googlegroups.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.