diff options
author | Eric Dumazet <edumazet@google.com> | 2017-10-11 23:27:29 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-11 23:41:24 +0300 |
commit | 4a269818a7eb8577d32d8b2879099c689ddbd856 (patch) | |
tree | dffe8189502f8907ae665781c3bdc4162a1ee53c /drivers/net/dsa/lan9303-core.c | |
parent | df2fd38a08272fcc2c658f2c4d7d6318e8da593e (diff) | |
download | linux-4a269818a7eb8577d32d8b2879099c689ddbd856.tar.xz |
tcp: fix tcp_unlink_write_queue()
Yury reported crash with this signature :
[ 554.034021] [<ffff80003ccd5a58>] 0xffff80003ccd5a58
[ 554.034156] [<ffff00000888fd34>] skb_release_all+0x14/0x30
[ 554.034288] [<ffff00000888fd64>] __kfree_skb+0x14/0x28
[ 554.034409] [<ffff0000088ece6c>] tcp_sendmsg_locked+0x4dc/0xcc8
[ 554.034541] [<ffff0000088ed68c>] tcp_sendmsg+0x34/0x58
[ 554.034659] [<ffff000008919fd4>] inet_sendmsg+0x2c/0xf8
[ 554.034783] [<ffff0000088842e8>] sock_sendmsg+0x18/0x30
[ 554.034928] [<ffff0000088861fc>] SyS_sendto+0x84/0xf8
Problem is that skb->destructor contains garbage, and this is
because I accidentally removed tcp_skb_tsorted_anchor_cleanup()
from tcp_unlink_write_queue()
This would trigger with a write(fd, <invalid_memory>, len) attempt,
and we will add to packetdrill this capability to avoid future
regressions.
Fixes: 75c119afe14f ("tcp: implement rb-tree based retransmit queue")
Reported-by: Yury Norov <ynorov@caviumnetworks.com>
Tested-by: Yury Norov <ynorov@caviumnetworks.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/lan9303-core.c')
0 files changed, 0 insertions, 0 deletions