Bug 99161
Summary: | 2.6.32.66 PPC Oops in tcp_send_fin | ||
---|---|---|---|
Product: | Networking | Reporter: | varenet |
Component: | IPV4 | Assignee: | Stephen Hemminger (stephen) |
Status: | NEW --- | ||
Severity: | normal | CC: | kdevel, szg00000 |
Priority: | P1 | ||
Hardware: | PPC-32 | ||
OS: | Linux | ||
Kernel Version: | 2.6.32.66 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: | fix |
Description
varenet
2015-05-29 09:12:45 UTC
Can confirm this bug here on IA-32. It seems that there is an issue with the backport commit f944afb246e7b8edd6196984e21764eeda5446d3 Author: Eric Dumazet <edumazet@google.com> Date: Thu Apr 23 10:42:39 2015 -0700 tcp: avoid looping in tcp_send_fin() [ Upstream commit 845704a535e9b3c76448f52af1b70e4422ea03fd ] skb is used uninitialized In line 2139: tcp_output.c: 2127 void tcp_send_fin(struct sock *sk) 2128 { 2129 struct sk_buff *skb, *tskb = tcp_write_queue_tail(sk); 2130 struct tcp_sock *tp = tcp_sk(sk); 2131 2132 /* Optimization, tack on the FIN if we have one skb in write queue an d 2133 * this skb was not yet sent, or we are under memory pressure. 2134 * Note: in the latter case, FIN packet will be sent after a timeout, 2135 * as TCP stack thinks it has already been transmitted. 2136 */ 2137 if (tskb && (tcp_send_head(sk) || tcp_memory_pressure)) { 2138 coalesce: 2139 TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_FIN; 2140 TCP_SKB_CB(tskb)->end_seq++; Compare this to the backport to 3.2.68 where in line 2338 tskb is used instead of skb tcp_output.c: 2326 void tcp_send_fin(struct sock *sk) 2327 { 2328 struct sk_buff *skb, *tskb = tcp_write_queue_tail(sk); 2329 struct tcp_sock *tp = tcp_sk(sk); 2330 2331 /* Optimization, tack on the FIN if we have one skb in write queue an d 2332 * this skb was not yet sent, or we are under memory pressure. 2333 * Note: in the latter case, FIN packet will be sent after a timeout, 2334 * as TCP stack thinks it has already been transmitted. 2335 */ 2336 if (tskb && (tcp_send_head(sk) || tcp_memory_pressure)) { 2337 coalesce: 2338 TCP_SKB_CB(tskb)->tcp_flags |= TCPHDR_FIN; 2339 TCP_SKB_CB(tskb)->end_seq++; s/backport to 3.2.68/backport in 3.2.69/ Created attachment 178341 [details]
fix
|