From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753119AbcERN3l (ORCPT ); Wed, 18 May 2016 09:29:41 -0400 Received: from mail-db3on0122.outbound.protection.outlook.com ([157.55.234.122]:26349 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751120AbcERN3j (ORCPT ); Wed, 18 May 2016 09:29:39 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=virtuozzo.com; Subject: Re: [PATCH v2] net: sock: move ->sk_shutdown out of bitfields. To: Eric Dumazet References: <1463572995-17432-1-git-send-email-aryabinin@virtuozzo.com> <1463576621.18194.96.camel@edumazet-glaptop3.roam.corp.google.com> CC: "David S. Miller" , Hannes Frederic Sowa , Rainer Weikusat , Eric Dumazet , , From: Andrey Ryabinin Message-ID: <573C6ABC.3090008@virtuozzo.com> Date: Wed, 18 May 2016 16:14:36 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 MIME-Version: 1.0 In-Reply-To: <1463576621.18194.96.camel@edumazet-glaptop3.roam.corp.google.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AMSPR04CA0035.eurprd04.prod.outlook.com (10.242.87.153) To HE1PR0801MB1308.eurprd08.prod.outlook.com (10.167.247.150) X-MS-Office365-Filtering-Correlation-Id: c7b9424f-ebb5-498f-8376-08d37f1e4621 X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1308;2:8niOd0VO1W50Rs5AndJU9L0gesJ54rx/EMdq9QOtBTxvYmgkzHsfFstEYvwVdwc4fVN4a3b4RM8j48VaHmnDR/rQccuk5m/tfysmZjNN228izocGCvFGsZkY8NzmzCBcXRd4ki0E6mIIpaD87HFdG38YL4rLX8ypj+k9pv9P9hMj2VcTR3PVdojwMVBEBuqv;3:URa1QrD48lCrmdGY1gqa8B20W/FlSXgZ5+GscEjZc4pdOngfLUAb1lY8t2OIQXmKvh0YL+9Kwk3neW/YZHwYedYiSgTp2S7/+qwI9pltYel1aod9EZxtBy96EY/OgjXk;25:InOBNR6LKiB0L3tqL7wpY6WbZIfJnpnlld7r60m9JAFXgk8qcip+0mUTjaI4TvvJi2jeDlCWv4ZMKBNvcSB0Xz4FzZVBwDVpx6TsxVrO/AVVFVA38mvZA7BJ+Tu3hDlo4OI1dnyoL3yrDo6DNPu0iKP94elaLABsuUo2HtUL/yP6Mixo9ItGLyCnH4QgIyx7+dnl+HVO7TnuN5sljhZn/OM5d2wmTVlUKZaOBs1NhJrcZCu+umOa6jl8GJIgOv2IAMM9LxFyU0wGhNZlAxeKbcl8QzaP8AhsRQZ9kiyTvibR0/WNBOL0F/J3rv6K8pXou+PACa7jpgI4hCvhngypRx7L35Wnhs9W6Wn7rnMVKuRWgxnJyp7FJ6EExMGMUfVwu/lrCZANL/myL7cnfJndWobFGpTPROquDzjfoxDyOIE= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1308; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041072)(6043046);SRVR:HE1PR0801MB1308;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1308; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1308;4:VOPJAKAiLxjP8JHV+wavXYhtNsXdkNKiPznLkAzvUK3MI7OsOUcVs2FLnA8kCgmGbhcRRSCg4le4fRpsuE3rIHh4MMfoJ1IKxlkZ3mxh/furrVFjJ0H4KEsGapL8xb0tWA9RJc8r44Q0ZmOBm47INd+YKBMKFICqxG9vcmBTLsuxbN1BO/cOqrIiqTY0ekRiMfXOcrQ//pIT2TMaMs1ZoH2TlcIOwdumJcUGF/lZcktoQ5z774u5G+NKjBVVLi/A7+KRD4QfO8yak6BPzQ535PoaUjuSooys0DGqY4nfD9RLV2AjXFzimCC8TrxDBNtJuuCqZzFHOeeKH9J6DbyKiOtV6whQv31323vQbAUBKHKKbQuUs0hg5MxSrnsb93ivQVQJsfuAuNqVCZtqLaoM60oRRl9W5oNhYDC5/A3FZV4= X-Forefront-PRVS: 0946DC87A1 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(377454003)(377424004)(24454002)(19580395003)(110136002)(83506001)(19580405001)(33656002)(92566002)(86362001)(23676002)(4001350100001)(54356999)(6116002)(50466002)(36756003)(2950100001)(586003)(2906002)(65806001)(42186005)(230700001)(4326007)(47776003)(8676002)(5004730100002)(87266999)(76176999)(64126003)(50986999)(189998001)(66066001)(81166006)(77096005)(5008740100001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1308;H:[10.30.25.228];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDFNQjEzMDg7MjM6cmgxM0RiV0ZKQmtsNFQxU21kUTdobXFI?= =?utf-8?B?aGVrZEVDbXFxa2tCTEJUa1JTeDViWVJTU2M5OHhMTG00RHZZbXBKVTF6Sy9a?= =?utf-8?B?ZTRHNTV0bklLSGxhM0Nqa3AxSXVyckx5Z2ZYVFZNdFgvWEJFcHU1NU1mcHc3?= =?utf-8?B?d0l4WEphUktSNlJFeGxCb3R2WXIrTXQ0L3BIOUJwVjVaRnlibUU1MUlPS011?= =?utf-8?B?VmRBYjdBT0IyclIwaFZ3S2hoVDVZcWNlWGRMb3lMcHlBOEVpaHdJcFZ1NEsv?= =?utf-8?B?TVNYYlZENUpGaUxtZmtMSDc0bmsvMWw3azZJMXYrU2QydU53VTArUnNMbzIy?= =?utf-8?B?SE1PTGxBWXliSkRZellhMEZIai9DTUR3bXZDQmtkV0dwdFJZalRwWU40VTJX?= =?utf-8?B?RENicS9iNXpFMmJvV0NRUjhWZW16NlpiNEZUNmJOdVd2d3pYY0JERVNmbDQy?= =?utf-8?B?cnMrRU5Lb2c1WVFQYXIwVTU3bGxlR3A5UmsvaTlPOEhoU0pzalFvSVdyd1ZY?= =?utf-8?B?aWtIQmYvdkVJaW1MbUFMMCtDVWUvNUZCeFUvMW1DeThpblhCN1pJbGpWQzY4?= =?utf-8?B?cFNmRGE1MUpkbjJQaWtKWjNUK0RjUEZiR0krTGRsTFNlcnJxcXZvaFUwV0kz?= =?utf-8?B?VzFtZU5USDJJYVZPWVd4aVBucmxHdmZBWVhrVHJhWmt0RlQ0QXh4VVpDUXBu?= =?utf-8?B?WFlpNFNrVDhyRmY3aXBMbFJ0OWFGVWZYYTdyYXI5SWVWN1d1OXh2NjhSOWpk?= =?utf-8?B?U0ZMbzkxSEloNlhBMVB4bXRNWHN0dFJKb3oxYnlYQjR6SnhVaklBdGtLUk41?= =?utf-8?B?MXl3ZExpbTdBTkRoenBoRTREeVNFcGcrSm5PcTJzdGErRG5aVmxPTGUrbHhq?= =?utf-8?B?SHk5Ny9aYmtJU1NmQ29FblNSNUFDdHE4ak1pYWZmbDJzNSszNVpQM21JaVJZ?= =?utf-8?B?MDRKWFVrVnBzamJUa0FRaUF5NzRtWFhEbEsvbEltUldBdGhBNHUzVjRZVHdR?= =?utf-8?B?NzFRdlkzWUpDRnlYd2RURENTWHJRa3VpTklXVnAxOUVxL0dtSG1tZ1Z2S3Br?= =?utf-8?B?MmhRcTM4eGtjNlc1Uk82cWhDNmx2a3pTUGhpTkVtNEI2SExvNU9veWFCNHVq?= =?utf-8?B?L0tIVHVleVNGWFpXeVNIRFlLaUFlbWorRmw5Q1YxRFVvY1ZjNERyaE9JekZz?= =?utf-8?B?aUVFTyt4RDdvWFpxNXdsa1REdEpPR3FjN1pTU2E4SEc1TElOQXFBc09RYTd3?= =?utf-8?B?eU9GeXdRM2pGYW1ma3hqRjBCZEFGdStCd2tZVWE4YVpQZE9HOUdUQmMvYmpP?= =?utf-8?B?UkxsbFVid1RVM1Ztb3JlREVyWXFQYWVMTWIxU2RJNjQvdzIwRTA5R3hLbVVB?= =?utf-8?B?d0svb0hYK2k0RndDQkdJcHVma0NYaG1EMENXNDk1ZUE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1308;5:ni7oCt14bJ6msKiiCwXBClXS/+49U7QFWf9FQjM0r0670hEAsl5vuuQN7NJLsU1VdWiOElGgy+5XQJzodVPugS9lNeVUkinPKEFUwICCc5LlRQFzlHUj8S9IeCBZsaehHuxt56wvzZwZyU9qd9Rt4A==;24:R6wRu5m9BbWBrHL7yA/K+dsxjOLPFPxC+mVFLaTi20B2qCP4ehzRCykZkfhQdUwJgiceY/17ViVN5t3KZb8GnuSeitciDga/iOAeD0UyPLg=;7:9A9npsYQJvITuN7q1Dn5J879rr/jQe+2UIwJqGuXKCNujAIfRSWlsQouK2LYE06wJ4Nc/JqOrY6ZRWOsn3Cz8wywEhoA1FiKQvPJVsbT3aV0FYzMNM6mMA12MKGQatbArvn6IG2f529ByX9mXmy7uLdnfrFiE9ew4nNK96sWSWGRN/29TZzQsOCqlqzt9Z5O;20:j2Dxc+x1VcC5G2k+JthNEpmpSrlxQrZXxx2jDSIHbxU8BYGeKDtQSwU/yI5zUPr958WoykHrdC5PC/jYXyaeqFEsRuTNUUkTRjscEgeAEAP8XScgZwqhY4p0ot6QdLrtC67+itRW3oBz78vrFQUDfbGQDRiZZ3FowacFzWkBGGo= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2016 13:13:58.3438 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1308 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/18/2016 04:03 PM, Eric Dumazet wrote: > On Wed, 2016-05-18 at 15:03 +0300, Andrey Ryabinin wrote: >> ->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 >> Suggested-by: Hannes Frederic Sowa >> --- >> include/net/sock.h | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/include/net/sock.h b/include/net/sock.h >> index c9c8b19..04dc131 100644 >> --- a/include/net/sock.h >> +++ b/include/net/sock.h >> @@ -383,8 +383,7 @@ struct sock { >> int sk_sndbuf; >> struct sk_buff_head sk_write_queue; >> kmemcheck_bitfield_begin(flags); >> - unsigned int sk_shutdown : 2, > > > Please replace by a padding, so that sk_protocol is sill a byte, > not 8 bits spaning 2 bytes in memory. I think, it would be better to have something like this: u16 sk_type; u8 sk_protocol; kmemcheck_bitfield_begin(flags); u8 sk_no_check_tx : 1, sk_no_check_rx : 1, sk_userlocks : 4, kmemcheck_bitfield_end(flags);