diff options
author | Willem de Bruijn <willemb@google.com> | 2015-03-11 15:43:55 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-12 00:09:55 -0400 |
commit | 3a8dd9711e0792f64394edafadd66c2d1f1904df (patch) | |
tree | 2b0f3746ed1049a0781d381791df55a24bcd73b6 /net | |
parent | c29390c6dfeee0944ac6b5610ebbe403944378fc (diff) | |
download | linux-3a8dd9711e0792f64394edafadd66c2d1f1904df.tar.gz linux-3a8dd9711e0792f64394edafadd66c2d1f1904df.tar.bz2 linux-3a8dd9711e0792f64394edafadd66c2d1f1904df.zip |
sock: fix possible NULL sk dereference in __skb_tstamp_tx
Test that sk != NULL before reading sk->sk_tsflags.
Fixes: 49ca0d8bfaf3 ("net-timestamp: no-payload option")
Reported-by: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/skbuff.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 434e78e5254d..8e4ac97c8477 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3733,9 +3733,13 @@ void __skb_tstamp_tx(struct sk_buff *orig_skb, struct sock *sk, int tstype) { struct sk_buff *skb; - bool tsonly = sk->sk_tsflags & SOF_TIMESTAMPING_OPT_TSONLY; + bool tsonly; - if (!sk || !skb_may_tx_timestamp(sk, tsonly)) + if (!sk) + return; + + tsonly = sk->sk_tsflags & SOF_TIMESTAMPING_OPT_TSONLY; + if (!skb_may_tx_timestamp(sk, tsonly)) return; if (tsonly) |