From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752554AbdFSSD7 (ORCPT ); Mon, 19 Jun 2017 14:03:59 -0400 Received: from mail-he1eur01on0136.outbound.protection.outlook.com ([104.47.0.136]:24547 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751897AbdFSSDw (ORCPT ); Mon, 19 Jun 2017 14:03:52 -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: [PATCH 7/7] rwsem: Add down_read_killable() From: Kirill Tkhai To: linux-ia64@vger.kernel.org, avagin@virtuozzo.com, peterz@infradead.org, heiko.carstens@de.ibm.com, hpa@zytor.com, gorcunov@virtuozzo.com, linux-arch@vger.kernel.org, linux-s390@vger.kernel.org, x86@kernel.org, mingo@redhat.com, mattst88@gmail.com, fenghua.yu@intel.com, arnd@arndb.de, ktkhai@virtuozzo.com, ink@jurassic.park.msu.ru, tglx@linutronix.de, rth@twiddle.net, tony.luck@intel.com, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, schwidefsky@de.ibm.com, davem@davemloft.net Date: Mon, 19 Jun 2017 21:03:28 +0300 Message-ID: <149789540861.9059.16507519363746458694.stgit@localhost.localdomain> In-Reply-To: <149789463636.9059.16943955939303454611.stgit@localhost.localdomain> References: <149789463636.9059.16943955939303454611.stgit@localhost.localdomain> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR09CA0082.eurprd09.prod.outlook.com (2603:10a6:7:3d::26) To DB6PR0801MB1335.eurprd08.prod.outlook.com (2603:10a6:4:b::7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6721e91-2a5c-41fd-1277-08d4b73d8307 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:DB6PR0801MB1335; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;3:MdFb6xJPNcDISGg7gR7qlUkDAlDgL8Ig8r8lHoAzHpBcEZnoOpyR0grWgFOj6UigiKRIy8NEYmG58PeOnsvU6Yj6xM/DwPtGmO2lg+tNMG2pTn+Cjols8o4rPE7t9VhVWzUd+9TTcsAR/ySDjlGS50YabPYDKdhynU0F1c1ksmXjQQp2ojkUo+E64bc4gqrQ+41LvjDw5KL9pZOuZwmS51oJFISkybrASrQrlQiRhAXg+LWla9g6o00AU9I1DCSO95QdrBOi0DA5zY6efMyzdtarAqsh++JUQDnOkr6LnK3oPcIOZcTKBmgKoLlVkkyzgr9E3wqDMy6PlRPaqZ3lVQ== X-MS-TrafficTypeDiagnostic: DB6PR0801MB1335: X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;25:OgQBQsL6PDCIqWNnUHZFOL3P0PRTdXyAAootbQDMm+V3VO4N7GSUg5xIPsfK9rrEUUUR1AKMepe6br2TIGCpo6wx0+drwS6WzUw3A5a3ZtKIkHl3I/ws6aoZ5W/EwakpLQGbucd99iNYqmPJeSjwOwGAQ2xiqmjxLfz9hru1O2Rz3kLFwqnjZK6EsiXqPCbPCfmGAyJB+Zj6tY6H+WbWzLE/QakTLmT+UnOTHYj8VZPQ00GN1o7cLH2Lhu+oKCu1+YIMmXm4dsRcGxexLtHbs0iK34PHGJbRbBaHYCfWdW49kAwGTiKIScG56XNQqrDZF6r7dES2wpu370iRY9oFVtJue5JUC5SewLvq4DAtVBYilyd7Nj1yHfdbB58B6wD+AOU1RxGpaEbmbV+IzQQE4i/ptUr4KHElr8mA+CZ0KGAi+dZXDkA+mlMTVyCAOuJpOYL1id+YvlDKfcBBU6ZAXxYaIJKtN58sZsmge4ja0zoNrvvQph8dHAfQ/ROBsF0/6kh9XgOTsdSkYJEJZTwWrLSvK6T51aTLpPg//AhG9uB6P+SVvPwzhFsjmdxazR0ubhRqfm1yBGx5d+z/F2NJcoKPQUvhxkUeqdM7L/5dSQJU/TI/SpFwUxR30fUIzQ5i+fiOd0aFmggJR/7KDO5lZRxozlz+26Mo3aVFrjOUOpvf9ReY/wPXiLIBM673My9iLmOtRDbthX6ZRvcvRTje4PjmQEDcZTbQZng8avFUQIq7O8tbPFlfFD+99Lxql9icKpmCKlU/GjBL/wE0OC5og66rAaVJ/oU0ljkcBCqKRgtbIpTPq9wMAhfhswkrUv++HO4IOw32+0hgFZjtZFH7Z0lMDWAD0WRMUq8JQCw3UWAAgRRZXYULwQY+brTpNY4813U3/rvT/BU/cJsC678OGHzqKsAXaVznuCjeIoyKyOQ= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;31:87cEtLIVZGViycdI8pJ7QHPIkH3yjYTbnN+Qg8OT931+5+s7UT/3tQozRIWXeo8Uwf7+Db56YlOgnDWH9qnTC1qtd1MFubbzDDJ38GaPnkKXS/9WY5CrH9pbe7PmkDhD1cLquI/1Jq/tNm8cAXlmVygi0nHttnm8pHQM9ZYKF8S+UN2C/59bR9L5f5h8xw6eMaJvLvVDceN5aWDRouG4jcAyDTqnTKfOZMA6qkErS8KGAEBPRYZexLZ/NORHEkSqNTdV+06n7RkcuaVJ8R0JllbuoijNQJ9oHmrlecpZaCKxu4wMmBhI3HUxABnEEJrL/NcTuSuJuh+dp6FScikPmjDGIeMW5xYoMgRHiHJjZi2ayUre1QeBh2QyuZiH43MwfArddDX2pso++SShvSV1CZ+tX2nJuuvTIsOxMp6PXLRhtLEOaiLnIHFRWHtQtRDp+umcbtFlCa7N9lkpanDtmD3bHCPqm6AG8ZWvIYv8gcgmd5tUFuWJiyRLl1JFL0tW9XjSBkmq9tyOzkzAet5pgmN9x73/K3S46oLKZelFbCOz0FElXeJY+cmnCpsmt1A30l+ZEaE5n9hCheTpzd4oZrZCX3tK2D50ou+LosqNWRW/71M2eK8jcsBMNzdt8xbnKExcKDq3RlWzrPYvg7bd8IMSn6BcfNDuEEZqTuKIdpU= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;20:JH+rsxGm8bDmojgLD6eMXmxvWZAUT6lkRtzogbrV+bVw6Ze95z9S0I5VF1p3uxyujkd++qOyr+GETd06kqARH1a+3vgX5S9THaroeQVzMC4JNS55YIfDXddHd77hTvguOjsH9W+SzHLn1jWk+S+sRhPZ8wzE4SGPCSAosBYuMzlCJ2a8TCXrp2orwq5GbodCQnr7ox88AYbjhcccwIe3meV8bBdyF0Ve56TS+LOLJVfWeepH4VUPEfcJU2MdgyfPWAdE4YI6k5StHzOe8GjRokYeAOuRkxlILlIXa4WwDqiMJMUGytIOYA4W6eDBU7SU7/oplsWxxK9g+m1dFccQfMkZTGXkmx28jFGyRzEzGoVn2p2+mIj+MAs0nRPMll6Iw0H9yQKpThRaCiVYYRNXZa28mZ80TO8QGJsq6/W1N8k= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(20161123558100)(20161123562025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB6PR0801MB1335;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB6PR0801MB1335; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMzU7NDpiL3FHdHpERlhNNklBZExFL1lJYXBuazBj?= =?utf-8?B?UEZ4TnVBZ1Bodys2LzdwZEVuUzBONDVVS2lEWmlyRm11TXB2MFA3WkRCRFNT?= =?utf-8?B?eEhBZzUwVlcxNUNEQlU1YVNlaktiWC93UkxobmlscUg1QTk4T05xTkNibDha?= =?utf-8?B?R1pZYTdsT3hyWGhQNHNaYVZCa0lPZXVXQk5VOU1rS05lRW5oSjVrMW01Qmpw?= =?utf-8?B?TGFXd1ZpdU5rdkx1NE05T1NFNE5INWY5TjFWMElJYjVSSUJHYVBscXV1VzNW?= =?utf-8?B?Ry9yVXlCTFl5OGNhazB3S2VHcmVjWXRlQzQrdllIWVc1WW51SVlWTG5yZWlW?= =?utf-8?B?MkFyUDFuZVZLbFBPWm02VFJGRElQZUMwZEpVQzZuemFOWlk4SFpEdEFlSzE0?= =?utf-8?B?Y2dldVBsM1JMejBjdjhZY0wrUnYrM0V4TnhGMU9vT0lEM3V4bkpBbWh1a2h6?= =?utf-8?B?ajYxSHdKNkdoWXk4eEZKS0JVaDNFTEZ4Y3Y0emdCUUNsajE5TUtYYkFQcnpP?= =?utf-8?B?MVpsTkordFFjYWdoSFFqNEhSQ3lXaEpwTDRsNEZ6TmQwRGpBbHZhczROTFVY?= =?utf-8?B?RHNqdklHWDFlYUkrcU9DNmZEQlNRSmZEaEZDQVhKS2Z6Z3Rpc2FVZlRueDJv?= =?utf-8?B?a2s5c2ZYNUxNZEp1RHNNeTFLcUkzbHZ3eTVCQmpLaVhDY1RBR1V1Yml1Sk9t?= =?utf-8?B?SDVJL3VEeFBHT1RvT1ExRWhJUVhUYnJ4VnR5K3RTeWhzb0lvTjRKS1hKYVAy?= =?utf-8?B?N0hHWEgyUG9DR2NwTDFlalZWejBidmJWMlU5WTFDcm9PUkFMMlovcVlidHdp?= =?utf-8?B?dVNEOW9JVE5tK3l1dGViQU5iMjRJalp0RzNwelR3VDJZbmNkaWt0TWxTM1dP?= =?utf-8?B?NmF2UjIxaDdKcWhJa01rS000UzBOYW5CcTZTWnA3Q05wVUJ0dW9sN09PbFdt?= =?utf-8?B?SWthd2FYditlTkNVUzRuT3krUVI5cC9RdjZHUmFyRXBkRjUrUDFseXV5dDBx?= =?utf-8?B?VHVHV0Frbnc1STY5TnI1dCtYVmxuZytldkJMelFvb1BHNjdWVkRueHZFZWdn?= =?utf-8?B?NmRtY1JwRTlyVE5VV2Q0a0VxS1FnUjhrN3pISDYxL1JLVmVsU2FsOFJIdXFj?= =?utf-8?B?N3dUN0ZSTCtjTll2RjhuU1RMRkZQTS9MTjNzRk4raUdIV1h4SGRKUU95STB1?= =?utf-8?B?d3puY0pPNjB0SG9vU0liTHBoWUgxQW9uVEwycVZVTDNId3lyOXAxeWZ2OTNa?= =?utf-8?B?U1lzM1dRMGNPVVNqbGpEK2YrL3YxZVl4aDkzQXh6SDVtY04yZlZpVGV3MU1F?= =?utf-8?B?N0tseTU2WTdRZldNRUFDS244N3ZreStudHhKRmZoMUJGd01rZ3VINVluOUpj?= =?utf-8?B?ZjI5U0xmWHZOMWdMSFVDS0pnRlZaT1VhWTdKTXA4SXh5RkUxTzgxMjhIWjFv?= =?utf-8?B?bFhWZHhvZEhHTkw4Z2w1MnR2MlJiVjBkdHUvbllLVDAzdEFnaytVUlE1VjBl?= =?utf-8?Q?9o5QaFHWLQgVGLmpI10QmcupTb5kGj6OrLBQOgYYo25lDOU?= X-Forefront-PRVS: 0343AC1D30 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6069001)(6009001)(39400400002)(39830400002)(39410400002)(39450400003)(2950100002)(6506006)(33646002)(8676002)(81166006)(305945005)(189998001)(6666003)(478600001)(76176999)(54356999)(50986999)(50466002)(55016002)(47776003)(66066001)(230700001)(9686003)(6116002)(42186005)(25786009)(3846002)(2906002)(7416002)(5660300001)(38730400002)(110136004)(4001350100001)(23676002)(86362001)(53936002)(103116003)(61506002)(7736002)(83506001)(921003)(1121003);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1335;H:localhost.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMzU7MjM6eGZ4M0t6SDZqZlhOWXRzUXJCV3VsNVV4?= =?utf-8?B?dk9FZktGRkx3Mys2SXlIVnlzQnYvTkxLN2ZoWE9LcXB6WTlEZmI0bUZ6ZStx?= =?utf-8?B?UXhib3NRVGpaTW00ZmlIT1VjUXUvelJnVUprVWdLM25xUFpmZmdHcER4T2xm?= =?utf-8?B?MlF2Q1V0K2VGRnpCQ2Y0d0JMNUdGK0p6alcxLzFYZ09iN0x5R3NhK1JEcGdH?= =?utf-8?B?R1hNSWZSbnJRbWdSOG5WSFNmbTk5dTJGQUdZQ1pFNkMwMCtPaXFCbXV5SE1J?= =?utf-8?B?MXl5bGdXNFJVd205V0xqS3JJeGR1WjU0dC83TVI0aEhqUmZlVFRaTFhvOXY5?= =?utf-8?B?R0JaUXNVZ1QwMlZ2V1pKeEVrOHRnenBhdjB3blpYUlpYUW13dUhiUUowTXZ1?= =?utf-8?B?cm9pSGlicWxlUld3c1hmZ1JLWWR3Ynhncm1KOTVRVmRBQXZHT3lHWHYxL2Zq?= =?utf-8?B?MXZCeVZPc1ZXSEdSNlZNR3B3VXU0MGtaYUFNeHRBUGZjTkdORVZPSTlJTFFh?= =?utf-8?B?MjN0UlpDMTY3K2tRZ1N6TENpUkhabFNYdFc2dXJXNm9NWnZqNitDOTBRY0tq?= =?utf-8?B?U2FwS1R0TTh4OUxpdTFSTVowV3h6OXg0akx0a1JXWlRTRWZGbDg1WjNNRVNL?= =?utf-8?B?d1dIK24zdHJ2cENvL0NMWE56ZzdYOVlVUk9CZCtKMFZ3MEFsUzFnaXJmdHdT?= =?utf-8?B?cXlvdnFXTHRoUjZtVFlMKy9JRGFqMTBlK2xOcnN4VU5uM01qVm9aeHZ3Mmhz?= =?utf-8?B?RzlSY0N5YXA2em93MVRGWm1UZmRKMVJkeVZCaTRyb1JkSXozaTRZVjU3bisw?= =?utf-8?B?SEgzUEhqUG0yTXFiUkh3c3hCQWVNV1l1TzB6UFQzNmJmSmZrSGRxUkJuNDF4?= =?utf-8?B?WHJ2Uk82YTcxN0R5L3RnaGpiM2pYZEhjN3pIWEhKZHJuMEI2aGVraW9paExy?= =?utf-8?B?dE04MVJwQ2V1UGhmeEkvQkRGaUllbTA2VkNlQXlLbFdISjZkTjhvRktISzJz?= =?utf-8?B?V3RMR0lXTjIzelpPdGdsbnhJMFliOUttRnhWdnZYYUUxWmZnRndjRlBZNFVW?= =?utf-8?B?anpGN21maGJFUkdvMHFMd3llSExEdVhmQ3MydlA1RGxtakU4MEl5ZW5SemJC?= =?utf-8?B?UncyWDhMWWs0NXB2VUx4MFl2Q2xtV1B6MHorT3lXRnpPczNCTGdYSEpHdTJJ?= =?utf-8?B?ZGNJMGl0ZFhiajEwY3diZGZNcnRPdUE2ZnhKMUk1RUdVSG1oRkZPUGVFTktv?= =?utf-8?B?dTMxR242dmhaK3FHRHdFdm1lakl4MHpkVkdFejFkVGhFb3Z6STFrYWFjTy9R?= =?utf-8?B?MmFZWC9JYkxyTTBQNUs1dzUyY0QwODJrWXFYb3NkRTZET3o0ZlZocnoxWElu?= =?utf-8?B?L2RpRjZLdEorQzUrbFB6WHJRUms4VlVtY3ExRkUraEhRNDY2UXl5MXBsUXZr?= =?utf-8?B?VFhXQzZrRExtZUF1OEljeWZTczRYUU5TQjhtQjBwOVoyWVVqMVg1bWZ1Vm9Z?= =?utf-8?B?Y3Bsd0x3PT0=?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4MDFNQjEzMzU7Njo1QThPUkYzM283Vk54TlNiQjZORm9qR25X?= =?utf-8?B?TGZQc1hjRGVmU2pUN3JJRDlPSW5KQWx4azB6YjZlRWRuUXN1Q3Z0c211anZD?= =?utf-8?B?K0FEbHpOVnB4QmMzOW41UHp0ZEtSYnJ2Z1B6RDRoUXgrMDhXMmhOSWUzTGQv?= =?utf-8?B?dmtBdjhBZjMvcnd6aU1ieVJNck8rcW91c29wenpKTmxUZlZhdnZnelZtY1FR?= =?utf-8?B?UVRlVllwU3FlNlJjQlpPdnZSSGt5SW9ZcmIySnRJNTJacDYzY293bEpkVmRH?= =?utf-8?B?SUtFRFlUTmNBRXVUWlBhQ2JYWU1ZYzc4RVpsVHN0Tzl6V0t4U1VyRE0xaXpK?= =?utf-8?B?Q0dET3JVRE1sRWQ1UDRiNXV6RlJid25id2lTTUZZREVqM0tKdGRzOXFsZ1pp?= =?utf-8?B?RnhrcVhaTk01VVBKMzZmUHBsekY3dndNYWRPbjNSME5tL3NoUEgvNGpXOUdi?= =?utf-8?B?Q2RXa2tHUzZyVVhNYmRPdHFxTFZHUVJJd21tVFAxNHd6OVcraTRUZUJDZ1RG?= =?utf-8?B?MUtmbml3blN5WmJ2bmJ6cWJBUzJLSkFUQkhOQ2QyYUJscXByV1kvL09sQWFz?= =?utf-8?B?cjRjYWNnWDFDSnE1S2xBY1Q5NjJ6eXErYWhzekl2WWgwV2RqVDk4emJySHgy?= =?utf-8?B?NUtFN0pkSE12ZDRucS9jT055OXZaUmVvRjZoVFF0eHFCK3JUb2VKdXhBWGN1?= =?utf-8?B?QkVEdE4zbXB5bWVzRzMrR285SkxxU2hBRFRqNnMvWTBHL3AxRndsNVRYM0FK?= =?utf-8?B?NXM5M2t1MGk1VXc2bHFZMDYxVDMreFBSWEFLUVZ4Y0w1enp3enpQNEFoeHZO?= =?utf-8?B?NlZZeEhQSzdScXRyTW4wVWF4b0wzbkRLTDZLZ1NraFNmOXNwcUhnb0xJTmxx?= =?utf-8?B?aGtCOTVGNjNMM0o5dVk0VHBMckpLM3J4ZnFNYzM3a2dSdzNmbTZSYVNRek1G?= =?utf-8?B?bG1Oc08xaXJad0Y4dFQvVk16OG1OQjNpV0ExRjdvVFdvSjF6QzhTZDFhYzdv?= =?utf-8?B?WUYrZ0wrTEpldXZHUEtxYXBYNU1wNzlLTVl1THN0aHNkaVZzcDNrSVpRelhr?= =?utf-8?B?R0xvTGd3WW5MT2Frc2pKQzd2K3ZQK0dKQ2lSTFg0Y3ZsMmxzck5SU21IcG00?= =?utf-8?B?OXd1L05vVUpPVFBkUDdvTmd6d2pMd2h3WEQvV0hXU0d6RExlNnFvNFM2b1FW?= =?utf-8?B?azhKOU1OeUJHdk1HdkpwcGl0aGFZNGh2RXk1NG5XbFF4TmhhQVNrd3pCS0RD?= =?utf-8?B?TytrUWNQdVJFWjBCdmFMTmZqbnpibGI0UC9QUnF4MEErbFRLTm9uTU5SQlQ1?= =?utf-8?Q?1cq4ZNETAKbzK9nQczIRcDTgHFvWYmhC0=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;5:mjgQvEptYFY//HYKWxLECTbBL/V2DJKJ4HgHp2skDAwS28Ko9PLmrEXzgxp0H71YF63nPMrWA53/ZVrr4mPKrlTMavpv4VAyIi4jOTsqcYIu/Oi1uBlWunghe9qOy7qvhdRIpBbNhvsTD4VYQuiu5jb24+WAhni/RFnExgCO92pa0qcO7KPT9cBmgdrDGVgj4j12a3I/9vFWwJbXz5+drcSBEicWkCLsnBVYxhRK2N7MXNh/zZ0Qq/pgcKgv48A9sZQSAhdUmQTjNC5ilz8nALIMa4vgBBPUZZPzRd5MdT000qQBURGqsyJOqfxJ7k/HDrfGUqOu5zxUiuowR9LzVOmSPn+iesioTqBONWiBLfA9w/Bm7ymwDm1dlzwzF1Jl8YLL5c1P83FC1cdyXaYyMdCtLkpLT79+OEnrzSLxm16znixnYq1OLtfidLc/aWDOQhOhCIcMSpf6r3AOdGQAL8VJyn/ddFLihr+fAwgjOtJ/j1INca1eJUFAKH3DsMmF;24:ojMErtqp0X8pKexFGeKKKkI6YuzpukQYIOuE3Ts+/mr7eYB/n6TuOVOYfWMKncM3cQlp2QNMVCxjI8G/eBFoQkSFHLi/Z+RFECDo+ZlmB98= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;7:Kk7jknCcQScictJySMkK9yrx+zglYV6+B+qedKBupEHv8LqSOny6K5FBy9sQtV1FWBnvXDKnZM0xdpVQFKSu9OPwaPTaK5aePmJz87EzGQNZEWWJIL9YBiCMYa9ffHuf8QXEzb+a41eQ2v0Pty16V6niqN9pRECBfzmY/VgOV3HDX0nWSqT3dGZcfzRjzQfcq2E4xXStQwpmzFruXQSRoutbHeL7MI/lEwiMuCu6fmm9WPKg9G/KOd9zqr77SKUlQ8iLD4j5/fodrIOpSA0BzU/WweHlN8wZVy6+Ip27NW3N0wRn+QJv37XZXuiJEEcZDYjuw+bE/4AQTivaeK77Axtoc5PmM+qwmMbv6AZ7UnYNcxoAPplZ0AmKrOp8CP5NOo1k6TP3Uu3RLNJnT35HTKuVFlTUrE4A4pflXk/WYgoEtd4L8Boli8wGlyyqQ61VjALRD/gcl5uCkxcPhIvWoLKP6qW2GxVOqr1/lRzAgs+40js4DpQEX/CpLUZoPjyqub+sKhhVwmdxwHvkxXaLZcpADpyn0WtWceZsRzOT4Sq6mdjQhjfhmHsNfBgsQaRIdQA6HagRbSKNV6esRAZruvMs/mk19AJ6jsQkDxjT2jEjXcRl1TFWPCMsEkQOCA7cFUijVB5McoUmhZmoJAAnA40o2Nc/UD2ADTLpGsdEhmGVLIQWrvs7DmePMOqzRS4NwoUzklge+S/AUeveAZXJLZTNDF0cG+hX3kwf8R4uFGBG0mM2jMxUIS2ILsCgMnuWIYGtENw3SSM/OL2utv3BUjkh0cNTJ1LVPjcB0T+G6tA= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1335;20:ZFyL0lHYjfd3noXlQ3INPD7/3h9xeKyfux/J4mEi/C79/7UjcjSDilTMxD3Uj06XOSJ0D1IG7e7GKn2z3epObZxc6bA1/Jv5M8h8cR+69QiFMwOSdhz8I4aPtC3qdXD3BpjChOAapQ+qe0Mbo2rXyGClQnLR/v0QyPUN/6JPi1A= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2017 18:03:34.3675 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1335 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Similar to down_read() and down_write_killable(), add killable version of down_read(), based on __down_read_killable() function, added in previous patches. Signed-off-by: Kirill Tkhai --- include/asm-generic/rwsem.h | 8 ++++++++ include/linux/rwsem.h | 1 + kernel/locking/rwsem.c | 16 ++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/include/asm-generic/rwsem.h b/include/asm-generic/rwsem.h index 6c6a2141f271..2f71b913b555 100644 --- a/include/asm-generic/rwsem.h +++ b/include/asm-generic/rwsem.h @@ -37,6 +37,14 @@ static inline void __down_read(struct rw_semaphore *sem) rwsem_down_read_failed(sem); } +static inline int __down_read_killable(struct rw_semaphore *sem) +{ + if (unlikely(atomic_long_inc_return_acquire(&sem->count) <= 0)) + if (IS_ERR(rwsem_down_read_failed_killable(sem))) + return -EINTR; + return 0; +} + static inline int __down_read_trylock(struct rw_semaphore *sem) { long tmp; diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index 0ad7318ff299..6ac8ee5f15dd 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h @@ -111,6 +111,7 @@ static inline int rwsem_is_contended(struct rw_semaphore *sem) * lock for reading */ extern void down_read(struct rw_semaphore *sem); +extern int __must_check down_read_killable(struct rw_semaphore *sem); /* * trylock for reading -- returns 1 if successful, 0 if contention diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c index 4d48b1c4870d..e53f7746d9fd 100644 --- a/kernel/locking/rwsem.c +++ b/kernel/locking/rwsem.c @@ -28,6 +28,22 @@ void __sched down_read(struct rw_semaphore *sem) EXPORT_SYMBOL(down_read); +int __sched down_read_killable(struct rw_semaphore *sem) +{ + might_sleep(); + rwsem_acquire_read(&sem->dep_map, 0, 0, _RET_IP_); + + if (LOCK_CONTENDED_RETURN(sem, __down_read_trylock, __down_read_killable)) { + rwsem_release(&sem->dep_map, 1, _RET_IP_); + return -EINTR; + } + + rwsem_set_reader_owned(sem); + return 0; +} + +EXPORT_SYMBOL(down_read_killable); + /* * trylock for reading -- returns 1 if successful, 0 if contention */