Octavian Purdila
293ad60401
tcp: Fix for race due to temporary drop of the socket lock in skb_splice_bits.
...
skb_splice_bits temporary drops the socket lock while iterating over
the socket queue in order to break a reverse locking condition which
happens with sendfile. This, however, opens a window of opportunity
for tcp_collapse() to aggregate skbs and thus potentially free the
current skb used in skb_splice_bits and tcp_read_sock.
This patch fixes the problem by (re-)getting the same "logical skb"
after the lock has been temporary dropped.
Based on idea and initial patch from Evgeniy Polyakov.
Signed-off-by: Octavian Purdila <opurdila@ixiacom.com >
Acked-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru >
Signed-off-by: David S. Miller <davem@davemloft.net >
2008-06-04 15:45:58 -07:00
..
2008-04-29 03:21:23 -07:00
2008-05-02 02:45:42 -07:00
2008-04-29 08:06:25 -07:00
2008-02-12 22:50:35 -08:00
2008-05-21 17:34:32 -07:00
2008-05-13 23:23:55 -07:00
2008-01-28 14:58:15 -08:00
2008-06-03 16:37:33 -07:00
2008-03-27 16:08:03 -07:00
2008-06-03 16:36:27 -07:00
2008-04-24 01:02:16 -07:00
2008-01-28 15:02:46 -08:00
2008-03-26 04:39:55 +09:00
2008-04-16 02:00:50 -07:00
2008-04-24 01:02:16 -07:00
2008-04-29 03:32:25 -07:00
2008-05-12 20:48:31 -07:00
2008-04-14 02:42:27 -07:00
2008-01-31 19:28:20 -08:00
2008-04-02 22:35:23 -07:00
2008-04-17 23:18:15 -07:00
2008-01-08 23:30:18 -08:00
2008-04-16 02:00:28 -07:00
2007-11-12 21:27:28 -08:00
2008-04-02 22:35:23 -07:00
2008-04-14 04:09:00 -07:00
2008-05-21 17:47:54 -07:00
2008-05-08 01:11:04 -07:00
2008-04-21 02:34:08 -07:00
2008-04-29 22:36:30 -07:00
2008-04-29 03:23:22 -07:00
2008-04-18 22:15:50 -04:00
2008-05-12 20:48:31 -07:00
2008-05-21 17:47:54 -07:00
2008-03-26 04:39:55 +09:00
2008-04-11 13:18:01 -06:00
2008-03-06 16:22:02 -08:00
2008-04-14 11:15:49 +02:00
2008-03-31 19:43:18 -07:00
2007-04-25 22:28:20 -07:00
2008-06-04 15:16:12 -07:00
2008-06-03 16:36:01 -07:00
2008-04-10 03:12:40 -07:00
2008-03-26 01:56:24 -07:00
2008-02-28 22:14:32 -08:00
2008-04-29 03:13:52 -07:00
2008-05-01 08:03:58 -07:00
2007-10-22 02:59:54 -07:00
2008-01-28 14:55:41 -08:00
2008-01-28 14:55:41 -08:00
2008-05-01 02:47:38 -07:00
2008-01-28 14:55:41 -08:00
2008-06-04 12:07:44 -07:00
2008-05-02 04:10:08 -07:00
2008-01-28 14:55:41 -08:00
2008-03-21 16:33:01 -07:00
2008-06-04 15:19:35 -07:00
2008-04-24 21:11:58 -07:00
2008-01-28 14:55:41 -08:00
2008-04-14 04:09:36 -07:00
2008-05-01 02:47:38 -07:00
2007-07-31 02:27:57 -07:00
2008-05-01 02:47:38 -07:00
2007-07-31 02:27:57 -07:00
2008-01-28 14:55:41 -08:00
2008-06-04 15:45:58 -07:00
2008-06-05 04:02:33 +09:00
2008-03-22 16:51:21 -07:00
2008-06-05 04:02:38 +09:00
2008-03-28 18:25:53 -07:00
2008-01-28 15:00:10 -08:00
2008-03-26 16:51:09 -07:00
2007-10-10 16:55:54 -07:00
2008-03-24 14:51:51 -07:00
2008-03-24 14:51:51 -07:00
2008-03-26 04:39:53 +09:00
2008-03-26 16:51:09 -07:00
2008-01-31 19:27:24 -08:00