Andrey Ryabinin
fc64869c48
net: sock: move ->sk_shutdown out of bitfields.
...
->sk_shutdown bits share one bitfield with some other bits in sock struct,
such as ->sk_no_check_[r,t]x, ->sk_userlocks ...
sock_setsockopt() may write to these bits, while holding the socket lock.
In case of AF_UNIX sockets, we change ->sk_shutdown bits while holding only
unix_state_lock(). So concurrent setsockopt() and shutdown() may lead
to corrupting these bits.
Fix this by moving ->sk_shutdown bits out of bitfield into a separate byte.
This will not change the 'struct sock' size since ->sk_shutdown moved into
previously unused 16-bit hole.
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
Suggested-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-05-20 18:05:32 -04:00
..
2015-04-11 22:28:27 -04:00
2016-04-22 15:02:21 +02:00
2015-02-20 17:35:14 -05:00
2015-09-21 16:03:04 -07:00
2016-05-06 11:50:01 +02:00
2016-05-09 15:59:24 -04:00
2016-05-04 01:48:16 +02:00
2016-02-11 03:54:14 -05:00
2016-05-01 21:06:10 -04:00
2016-05-04 00:24:27 -07:00
2016-04-13 10:41:10 +02:00
2016-05-20 11:23:49 -07:00
2016-02-11 03:54:14 -05:00
2015-09-17 13:20:05 +02:00
2016-04-11 15:34:40 -04:00
2016-02-08 10:30:42 -05:00
2015-12-08 21:55:49 -05:00
2015-03-04 00:23:23 -05:00
2015-06-28 16:55:44 -07:00
2016-02-09 04:45:49 -05:00
2015-07-27 01:05:24 -07:00
2016-03-18 23:14:15 -04:00
2015-11-18 16:17:38 -05:00
2016-05-12 11:16:40 +02:00
2015-09-30 13:16:44 +02:00
2016-03-13 15:01:00 -04:00
2015-02-11 14:46:37 -05:00
2016-04-19 20:09:25 -04:00
2016-04-25 16:44:27 -04:00
2016-04-25 16:44:27 -04:00
2016-04-25 16:44:27 -04:00
2015-04-09 00:02:26 -04:00
2015-03-06 21:50:02 -05:00
2016-04-15 12:57:29 -04:00
2015-09-17 17:18:37 -07:00
2016-05-11 19:36:28 -04:00
2016-02-16 20:21:48 -05:00
2016-03-11 15:14:26 -05:00
2015-10-08 04:27:02 -07:00
2016-04-25 16:20:09 -04:00
2015-09-23 15:33:15 -07:00
2015-09-09 14:19:50 -07:00
2016-03-10 16:24:02 -05:00
2016-03-20 13:44:34 -04:00
2016-05-20 18:03:16 -04:00
2016-04-28 17:03:38 -04:00
2016-04-25 16:45:53 -04:00
2016-04-26 12:00:49 -04:00
2016-02-18 11:42:19 -05:00
2016-04-21 15:35:44 -04:00
2016-05-12 16:53:58 -04:00
2015-08-31 15:17:17 -07:00
2016-05-10 12:25:04 -04:00
2016-03-14 12:19:46 -04:00
2016-04-27 22:48:25 -04:00
2016-01-04 20:40:41 +01:00
2015-03-23 22:12:09 -04:00
2015-12-15 23:25:20 -05:00
2016-03-22 15:45:44 -04:00
2016-04-04 22:11:20 -04:00
2016-05-20 18:03:17 -04:00
2016-02-18 11:35:51 -05:00
2016-01-15 15:07:23 -05:00
2016-02-16 20:42:54 -05:00
2016-04-04 22:11:20 -04:00
2015-12-18 14:43:38 -05:00
2015-10-20 06:08:27 -07:00
2015-12-16 00:14:12 -05:00
2016-03-13 23:55:13 -04:00
2015-11-15 17:12:37 -05:00
2016-04-11 15:56:20 -04:00
2016-05-20 18:03:16 -04:00
2016-02-18 11:31:36 -05:00
2016-05-20 18:03:16 -04:00
2016-04-20 12:34:17 +10:00
2016-05-11 19:31:40 -04:00
2016-05-03 16:08:14 -04:00
2016-01-29 17:13:43 +01:00
2016-03-10 14:42:03 -05:00
2016-05-11 19:31:40 -04:00
2015-05-11 10:50:17 -04:00
2016-02-21 22:00:28 -05:00
2016-05-12 11:16:55 +02:00
2016-04-13 10:41:08 +02:00
2015-10-23 06:26:42 -07:00
2015-12-01 15:07:59 -05:00
2015-08-10 13:46:21 -07:00
2015-12-14 12:48:58 +01:00
2016-05-16 13:46:23 -04:00
2015-12-08 22:02:33 -05:00
2016-04-23 20:13:24 -04:00
2016-03-23 22:09:58 -04:00
2016-05-16 13:43:50 -04:00
2015-08-27 14:18:48 -07:00
2016-04-07 16:53:30 -04:00
2016-02-11 03:54:14 -05:00
2016-04-04 22:11:19 -04:00
2016-04-23 18:51:33 -04:00
2016-05-02 22:27:06 -04:00
2016-05-16 13:43:50 -04:00
2016-02-08 10:30:42 -05:00
2016-04-28 11:49:45 -04:00
2016-01-19 14:44:23 -05:00
2016-05-20 18:05:32 -04:00
2016-05-17 13:58:49 -04:00
2015-03-12 22:58:12 -04:00
2016-05-11 19:31:40 -04:00
2015-07-09 15:12:20 -07:00
2016-05-03 16:08:14 -04:00
2015-10-26 22:24:22 -07:00
2016-05-09 15:59:24 -04:00
2016-04-27 22:48:25 -04:00
2016-05-04 00:52:29 -04:00
2016-04-27 22:48:23 -04:00