From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932113AbcERM4l (ORCPT ); Wed, 18 May 2016 08:56:41 -0400 Received: from mail-db3on0121.outbound.protection.outlook.com ([157.55.234.121]:6496 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752404AbcERM4j (ORCPT ); Wed, 18 May 2016 08:56:39 -0400 X-Greylist: delayed 4273 seconds by postgrey-1.27 at vger.kernel.org; Wed, 18 May 2016 08:56:39 EDT 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] net: af_unix: protect ->sk_shutdown change with lock_sock() To: Hannes Frederic Sowa , "David S. Miller" References: <1463566486-9123-1-git-send-email-aryabinin@virtuozzo.com> CC: Rainer Weikusat , Eric Dumazet , , From: Andrey Ryabinin Message-ID: <573C50AF.6090301@virtuozzo.com> Date: Wed, 18 May 2016 14:23:27 +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: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM3PR08CA0041.eurprd08.prod.outlook.com (10.160.207.179) To DB6PR0801MB1304.eurprd08.prod.outlook.com (10.168.11.22) X-MS-Office365-Filtering-Correlation-Id: a54b991f-8c5c-415a-31df-08d37f0ebe60 X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1304;2:HX3/zzytTb/buQwCUOR8IU5LBA5A6bNyDpjKVvh1wKiyVXTGGWyaYfgmUsSZnan9gdc6fskULb2/MtjjVlQu/V2nqt4yl6DhS3ACVfOHW/lAQ7xBLCKffUMYkLBxct9N0BP1Iv04L67p8WNEsFrquTSL1HwfN2xRn1oNEzXD6gwTUTA5W1fvNlYavFMeVPi6;3:zC26fXjfGhajDTkgEgn/w/yQlqfo6dHz9GCiJYS9krbz2PH4+/DiBPwaLfGcnHXyVShPGlLG00RMYIcgYyuBLqJ8PsnEfmsWFgE/5WSHKhNiFBDUfRaxFkcWBCle6UPH;25:agbsFCjeXFhG3YiGL8DTEiibvSGxe6T3viYnFUNCdDhpmeEiJTK09TflK0zW5jmL0sAl4ONfXHynG9Hj4lEoUXn55zI6tZLVMTiCfQjy8bc3dc0oT3YKrnhJeSTzaUG5LAM/5JTPqWvBv2yDWNawmOIClpS6Grxhi05tVlT1WiEvk2Ad75EuZdTDowt0gMKpnTjyN7swmvGUd/ZD1t/DtgQNWtYhMZS42foEGXWdm8h2VQSexB8nmKFNBeI8n/7sJ9iWJevxLuSh6OIgJ3DCVz+/Ost8VV+szf3Gsqtuxs4vzdGPeLPeH9AyBclO66GODNz7JDXJacTopMN/qEvKZCnNaVZBLNmVYzzOi05yPTATDQpaQW4TL7i7gfc9+RzDVT67uaJFkXfHvg7UDZmSEEs6nEduIWulLX+FjWxVD+0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1304; 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)(10201501046)(3002001)(6041072)(6043046);SRVR:DB6PR0801MB1304;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1304; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1304;4:J00+VSVOrByXIzfoNUv4HaWX/rI4CaFjkEMf+iJ67QAsqvBmC+X4qBpzFb64iJtUFkbrB7Mv5Pg8ZUQrrOe3GcKzos73rhASqT3kMK5OLhccX190wGCKo6NNZHuLdRFGwtCcpqq78CIJfdhtNkTgpHIzqqoCeqXgCWIeW2MvIEy9WKpTTg/90wGjblfMkTAvTP2BNX2+z0wLHtKwqB/mI4RZJgTOk8SEnV+C8S0dsZ9GFLvcY18Sx64acYdvmV16MX1JpXAUYCmKK05uwDG80MJ5EntJxGzzFZCKdnF+f1Ji7/b4nGeiiMMi2v1+IbbJ0u+4y363oT9Jzn1l1JotTfSxctuIq5yl4Qht5pG+SXypxV6373VC6d5XQDM0+6b4Q48WhpUoiG3ylbamcsFrpaSYfVHs0dadDIPwxwezBO8= X-Forefront-PRVS: 0946DC87A1 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(24454002)(377454003)(5001770100001)(5008740100001)(83506001)(65956001)(586003)(92566002)(189998001)(64126003)(42186005)(8676002)(6116002)(59896002)(5004730100002)(33656002)(87266999)(50986999)(76176999)(54356999)(81166006)(65816999)(2950100001)(3846002)(2906002)(36756003)(230700001)(86362001)(80316001)(65806001)(77096005)(23676002)(66066001)(47776003)(50466002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1304;H:[10.30.25.228];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMDQ7MjM6SlQ0SzltcHcxVGhlOW5ZeEFOemkxOU1U?= =?utf-8?B?U0xpRFBYeTIvREhzaThrc3J3TklKWkdUZFJyS0pxa3pzUkNGNmtvMTl4QllZ?= =?utf-8?B?cVJTaGp3Q1ZnK2JWSUZGdG93UXA3Y1ZlWmNJWVRiNkcwaVZjR0NCS3dmWmlJ?= =?utf-8?B?cVh4ZWYxcGd4bUFDa0ZwMkVWSm9QM1lOb0JrRkFGYkZIMTlWWVhtVE40UDkw?= =?utf-8?B?bzFWZWlueElyMy80MUFYYlVIQTNLUEhuRUhzU2JkWGoxelJBNUQwcUErRDd3?= =?utf-8?B?anFlcGZlNVlxWGxIUWRoR0loOUlnN1JOSjN4NnBrTDgrQzFlaGZiMFErWXJY?= =?utf-8?B?S1N4TDU1RXBKNVpwM1ladEk1VmlkdW92NTFkRzJ2V2g5SW9XZm8vaWVWT0t4?= =?utf-8?B?eDZGSGsyeG9PT3BLWU1iY0FHaUV4TDNDeHFKUnlnYlA1Z1hJblVqa3lvR3FR?= =?utf-8?B?YTVaZVFTWDU3UzNHS0U3RnFTSkVZbUJ5WW15bE5BMHFnaTU4dW5wSk9yb25j?= =?utf-8?B?cXNIR1VhbGFITGx5RFhvY2M2RjVkNS9HQWNvUm50elBxZ016V1JuVjIxZ2pC?= =?utf-8?B?MjZNbEpwSGVXdG9SZTZHdXdhUHpvQ2FUZ2tjNVR3c1N4QitLVGdzUGlyL08y?= =?utf-8?B?SHJvOE1PVlNwR0VmQXdkdWRWOVhZODJ4ZkJQTkI4c2dFMnVDNDNINjVLYWZC?= =?utf-8?B?aWJBZ2JQUUZxeUZaczRRQ2RaSlNSN0VQdmxEZTZ3NjRUU0FnSDVURllhNUpV?= =?utf-8?B?Q2JQZkxId2d6VDYybWVucEtRODhmZjlhelE2U2IvTFppTDlTVzh4KzhSakIx?= =?utf-8?B?UUtuckljb3hHVlVnT1E5SmYrYkhEWEIyRk96KzZhQUFvSFZCMTJpZjRoK2Ew?= =?utf-8?B?cHhuZFhZaVEyTEsyWW15eUFOUHk0L0tXMUxkK1JnTVlxbzdCTUZrVlMyNkNl?= =?utf-8?B?bEt4WnlTbjJ6eTFlRXZXWGFhZHQrbjU1U3lOMDFjcWRHa1JoQVkrSlBJMnJo?= =?utf-8?B?cFJkTWh0YWRnZDNCdzUxbmZIOUlSVEdYL2xpZjg3cXJBV2FXSFltNENCc2ZO?= =?utf-8?B?OXUrSlFORGt2YjlQSlRGbEhKZEU0Z1gvOHZmanJnS2VoaE41K2czM2szdGNp?= =?utf-8?B?dmJQNWc0WVRoam03QVNTTXZsaEtxVUN5LzU5UTFqN2U0cENBK2pHRk1mRU1v?= =?utf-8?B?S3c0YWxKb21vRWNadmhCOVBZK2c3QXRVTlpPcEprZXpsblBiN1ZBQzlSNFU5?= =?utf-8?B?WTJlSlFXWVpRYlovT3gyWHhaWmVyMUtyWkpDVWlrcllpZ3JkZnJyeUt2UG8x?= =?utf-8?B?Q0hKZlhJS1lHc0k1ZzkrcjVJL2xKYkRZZE5ML0RZQ1B3anVGaE9pTzNaVWo3?= =?utf-8?Q?tdw8wc4q2U?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1304;5:ce9dZROeqtfzc7eVeMVQLBloORozZ4wQpaeLhlSGbS6ImFPtVHt6wTVughdg6h/0f7e/waGj2ykvzCA7NSYLOBRI7Ed99ALTPCRhe608Z91V5gza82Jjyce/UFz8r/3q2PMw8rGfPIdybLWBZtlCNg==;24:P1rWUXhcEzThrt9h8hCAK2ax7/7rJHZv0agZQQ9jG7G0hNNf9ZVCil+VOSZ6NTIHXqxwZquOkoAFH6rKjVq10unJkrwgoPfnd8rrDZz8n2w=;7:n97/Qzd/pjxd4B7k+jCV7ayuShUGOIJk+aQPXHtq97+BDeWXn18ibJf+TjZBiG226064xcussRr09vU6uLIPoo4yj8SrLjHeQigQVI28lM8IC87nBGnUR/lbztLtCxAbRpPc7idaX68TWS5Uyn5uthaimj0Fe5Jl9mG949jXFSzkk0BUIELOHl1jADAw6vhQ;20:0wwQfqrdJdejZuLkq50wCyXBjIXLUAa79Tr7wE6NDqQGhlph5rCYGfIDoph90cGe871K9QuSiksu+OtW+uiV4Sb1Rt+cUgHD6fIHSmEe/E31TxuABoALyeRaNkr2Y+jfT+/ovjFJxaJW7zlI8wsBCZJKT+0ZofVQrRhrvKVMRxQ= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2016 11:22:48.2585 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1304 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/18/2016 01:38 PM, Hannes Frederic Sowa wrote: > On 18.05.2016 12:14, 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 that by protecting writes to ->sk_shutdown with lock_sock() > > Is it possible to move sk_shutdown out of the bitfields? Maybe a whole > which suites is available somewhere? > Agreed. I see two possible 16-bit holes - one after 'sk_gso_max_segs' and one more after 'sk_tsflags'. > af_unix doesn't depend on the socket locks anywhere and it would keep > locking much easier if we only depend on the state lock. > > Bye, > Hannes > >