From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752237AbcHKThR (ORCPT ); Thu, 11 Aug 2016 15:37:17 -0400 Received: from mail-he1eur01on0124.outbound.protection.outlook.com ([104.47.0.124]:17859 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750909AbcHKThP (ORCPT ); Thu, 11 Aug 2016 15:37:15 -0400 X-Greylist: delayed 7185 seconds by postgrey-1.27 at vger.kernel.org; Thu, 11 Aug 2016 15:37:14 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH v2] kasan: avoid overflowing quarantine size on low memory systems To: Alexander Potapenko , Andrew Morton References: <1470133620-28683-1-git-send-email-glider@google.com> <20160810155015.bffc044a171466b2fdf5195e@linux-foundation.org> CC: Dmitriy Vyukov , Kostya Serebryany , Andrey Konovalov , Christoph Lameter , Steven Rostedt , Joonsoo Kim , "Joonsoo Kim" , Kuthonuzo Luruo , kasan-dev , LKML , Linux Memory Management List From: Andrey Ryabinin Message-ID: <4dd1e32f-24b8-9aad-7418-67b90aca5eba@virtuozzo.com> Date: Thu, 11 Aug 2016 18:06:02 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.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: HE1PR03CA0012.eurprd03.prod.outlook.com (10.163.170.150) To VI1PR0802MB2560.eurprd08.prod.outlook.com (10.172.255.138) X-MS-Office365-Filtering-Correlation-Id: 7aaa3dbc-19bc-4c6e-8cda-08d3c1f8d653 X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2560;2:biiYoZn7hRHuzxtwGKaq0QdZ6qlKbKYF3xJ93Q9KC2IqXuGnPvK/KrK9Feex5AmNZrYFfe0ayixRhIfhBMGyBVSb+sCPi+K9ytr1PbEODWHS23UYsxGGDIzUxCVobvRxji/DOOc9E7EFCYPA6TTveE5K9G+Gvp1W/NLfUazCoje+eNqUCotyiz/pZxo3zrXi;3:k/O2saWr6o0RntNVfE6qWJauPDxX6rcZ9eZ6zSZfIvpZlS/ZQFEid3BYwNB9PECRfLYD5xP3urpgGQkkpavjbcsWou9xN3r8WZo07W2mZy05+6SflVzn1mtegFOlhYEF;25:5TrapsbPUbCIMkgYzBY2fNrAnURMHVnQ4AdlR8kFKMNRYftxZpkcYkOSBY8RUuLwFVv0zmMWv4iGsS3VQomO3d7X8aQyxf2LzPo2ZV/J+ypnup55ockb/rQ2/MkgTXS7YAssrv1qgWUO8Gn3WL3vpYqj9dMjZXRA1s8Zea0yz2kBRvWXXUxLE6BKuLE65aqbnVNnp80uOfnTzn8p8MLJCc0lT6qu/9gcRak0Eey7+jSPfSa5u35x84qs7N6wEhQ2c4mFEZRKIiZQdXeQl6pdhXH20Jey1X4Aalm76iW/OUpRIKJ4HZ1HGjQLtXEozKvz+7quYLtD93B/ESvioZRlGPNHtwionzI6kmFlQmlsgvd02xbvOUooGTO4JNqht7APuLjU01r7RbJiXLaS1dJH5FBbKBCW9Fd8dsxz7CFgA70= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2560; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2560;31:8gZtpGu3QLxO+3eocI4kMX8cYazuzaTXyBBoO51SplvaPYKtYm8kECYYIyM7G66NazQP1Ryaroqf2n0BgxLIW6CkLQWP8yGsfsNH/fXKc3CaTU4YFd4gEQzcWwNqNWkQvFizuNBb2RVnytbYEkDPsSFrI9FkCelECSii2YUzsPS+7JVMLo+0ymXxYlcVple9yLE25eM1uRP8yl1YKzI8KGTxJpYdyaxlyTgJelsO83k=;4:J+4mwoFJHT+YnIcqL+e4aaeC+ztfGwN93mrLQcakMnJmCuLeXlXzA2E6DhthzYVmdyIE4z7LbaAVvhohFWRNqbssAtW9J1aLYFvD8g1YcdbSOqFddFSQHOy4TQgNsd79q93vCMORP+f9wy+nFW7WeA8SoYBHj9CFYsj5z0dDv2v0uuMWhiXKHFsZY/tzw2nn37LxjdGA9fF/GlUskxyM/xZf5E0gBIA9I9QL5sREjhh5ELHh/qGC4/Pv3oB1seAQI7YrKdCJSEdbghpzOTKRuPvBebSgeydEx916Me4HLv8xIfG2tOscitmBKY5A8/qqBU1seXsA/R/+0h1zyZwlRsj1v/pDFkFGFUrhd06LICrGFHSKh+rz5FQOA7i/JvDiiYcCxwWFqNR8LqtBDnek0Jdpn6ntgdo38A7vcNqc0w5yWDZLtTZF/mUuUQ/lvnB56MS/WkaAX3JGUoDtIE7pM75QygOTmK/zv68c+ZseIw4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211936372134217); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040171)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6042046)(6043046);SRVR:VI1PR0802MB2560;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2560; X-Forefront-PRVS: 0031A0FFAF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(24454002)(199003)(377454003)(189002)(2906002)(50466002)(189998001)(19580405001)(19580395003)(31696002)(65956001)(65806001)(66066001)(97736004)(5001770100001)(83506001)(4001350100001)(7736002)(3846002)(47776003)(6116002)(305945005)(7846002)(42186005)(81156014)(4326007)(2950100001)(36756003)(81166006)(23676002)(7416002)(31686004)(68736007)(64126003)(101416001)(105586002)(86362001)(33646002)(77096005)(50986999)(92566002)(76176999)(106356001)(54356999)(230700001)(8676002)(586003)(65826006);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0802MB2560;H:[10.30.19.223];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDJNQjI1NjA7MjM6VUUzamI4UEJSTnBIR3lIYU9vNWVhY012?= =?utf-8?B?UGZBN0ZscVBhZHBQby9BTXB2U2NKM3JaWlU3Z1laSGhJNkhtSC90eS9DM0Fw?= =?utf-8?B?elR4blF3aUVEcFQzNGJGTk9UVFFCcGtvU2xwWEdVMkVkTTZjREowaVFOdXlx?= =?utf-8?B?Ni9DclExdVhLSVd6YnpEaFkybisyZkZpM3FDQ3J2MVNGeHhMUzNubWFpOVV1?= =?utf-8?B?b3NTaWtaSklEYjAwYjJzN1drc3lQdUk3NmtibytwSjZlU3ppNG5hdlRsck5O?= =?utf-8?B?S0VKaXhNTFM3aG1GUlZvYng1cGFPOU5yMVN0R1prelVIWThlTEtZbDRmRDUr?= =?utf-8?B?amlJQ3VRbTFwOHVXeUQ2a2pEZ25XYVVzVUo3TWxxZXRnSnNaa0NzY3Vkcllk?= =?utf-8?B?Q1p6SlRjTFlpY2pRdVhUSjF0SUJ0b3FsbW95K1JhOWNNMVMzUUxRU2svVzlV?= =?utf-8?B?a2dnR3M3c0NJZnRJbGErQStpSXdEeS9yRHZINllHczNjWTJKbGNPem1ZMjVJ?= =?utf-8?B?Qnk0QzVtQkxSQlJtMTZBdFYvb2RtTkZnRGxaYUVyN014NjZqVjRXMDBsQmY0?= =?utf-8?B?MHMrYmFTOWdtNU12TUNIQVZ2S1psbFhkYVpIT3BaaVNaOFg4MWRCYnVkU3Bw?= =?utf-8?B?TnYxZ0ZMbzE1Wjl1b3lHRXVsMm1vVllDRDU3SnFvb2JDN1BIS2IrMkdIRWNr?= =?utf-8?B?QlZsVkQ4b0ZrYkdDL3IyNHl4R0hHeGtEMEV3cEZSL2ZrZTh2OXUydUJRQkZJ?= =?utf-8?B?Y3NVSmtSTVhZcEx0UnBZbWtNeFZuRHZHQ1Q2aml4Wi9XdW1VNHFyYWlxTmdR?= =?utf-8?B?N1RYS1hmK1NPVS91SWdzc0Zhd0hxYktHQXN6NUhzblRISXhVSDdPUGxWY1ZC?= =?utf-8?B?L2w0aTBTY0RYS016eUs5UXhMcVhMWmFsY0VXL2ZoTGZxZmNkMDh3bk1ndmpo?= =?utf-8?B?V1hkaGphTUF0Z1lZL2YybkZHbFZUa1lNNWVtSFhaaGp5bGFwMTZZaXc2U0xo?= =?utf-8?B?SXNYQkY0YjlXZ2wrR1l3WURUbXRCWWNKaFZYdUp3ckhGQ1UwaUNEeFFMaEhw?= =?utf-8?B?eXpvejIyeGVkNUlDOEptSWJLQm5SYW4yemRHYTdSWDQ2UVN3clA4SytvdzUv?= =?utf-8?B?R0sySVZYMURFUUlJbmRRdXBPOTczZHNUR05hRCtkVys1WjdESWQxUUdDOE9L?= =?utf-8?B?ZEhDQlBNcFFTdjc1SDN2M3hNSUlLT1V5OEVTYzlleUdhaEw2WWRubUh6YTJz?= =?utf-8?B?cDFpM3djYzRmQytTT3NRb1RsZ21GV2taSWpnVUdMR0VpKzlNZmhob1hpYmtz?= =?utf-8?B?blZsbmxzQ1hNTVBRQUdZeHNJMXBwT2lSTHlNbGxmUW9DNGVwWmM1SHhsSk11?= =?utf-8?B?QUNJMGpBV0t6dGlFWkJtamJIYjNnbkdqdGZpSlc4Tjl4WUpUdWI2SHJWSm9m?= =?utf-8?B?Z2JCcTE3cXUrSWNZY0FoUUx4TFA4bWRLUkpzbDM4dDJZTTU2TGVqeWI0RFJp?= =?utf-8?B?YUZKSUl5eGpSZGVFanVIdUtJZWxITlBVSWJabVFTa0FNSmRuUjQxTEJZdDFP?= =?utf-8?B?VjdKaEFMVXlSV1ROeG9VYXNueDFYblh1TXhCeitwMWYwZUZFem1hS2xFQ1c5?= =?utf-8?B?YUdxQ2EzZHpxa3VIVjV3N3FaZTdXczRIUFBTVFVuNzFhSUFzNUZrNU0vZmJ2?= =?utf-8?B?K2J0MDU4NVJ4WnhMeUJKUUlpbmFPME5ZUmg1akJsYzkrdmllM28vdW55c2FZ?= =?utf-8?B?NTVCTHN2TWE0T1NYcFd0ejF3PT0=?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2560;6:Oj7Z0nDFQZ7DVvVeMY4PXG4Y5+06wbUt4n5c2oxuo56BwBio4A5sAKRjiPemBAT01/zMTpk1iF7ygoP8WtvLZyMyyNyL6OMpN78ddOPV5WgMbEgDsEBXORW4b75bOXC2+7HkbKmzLbLv2S0cI6y4i6NUGgVznlXLtZ3aQurdS31qRdlsdeqxSLbmsOL8YemqfqplDMI9nghsU4okNDuip6Dij4AWQ9kydTMyIh3P+MXvvqWKNjyO74YQWWEDbIk892C/n/C8vv6BwFow9XFnHaTAzN5kZ8ccS4dSAeb6QHRqlCLQHBuElh80sd8WotpV;5:dsD5s4zeFaq9RyLMpA9iYvXfUNCPfxu2o4J/nRf+4wBOurs63maBH+2Drk3YI0M1deJF2g17nzcfHMrwaaeMg/C7jlEPP6TLBGJPxit9XEDt/4hdRgnysgEg751dzUUXPlzTCUGuxInrHVLP4ZYICA==;24:nRXw+OfLYU4QbkCrclNtnYcs3ehnbFunfK+0YoLN9tvUD8+Nltby2MXatnyNIMje204xN+kunJxId6JMrZ6S69Kx+4vR8oiCGWXrjFWa1IM=;7:mF2P6BSh/SuAcxYZzzCYnNrCU0/lxLEMwrtoW4DGfNiBaMV4tBOjl3KcauTkLcf5049hFzqEo3QBCcqrAEBc+tFamxmMVbpNtfQtFiKmRBbN5bchG3i3LNm+v5lZxugnK6GNLn2lCTIPxemYebaF8e/n6inwxXXNJ2quShh5rPUw+HwXz4Db3Lx3I+W9wS8Ga7pT5hn3viBfFe8fe/V/rR+4Iy4F3s9lEuzUqMCjq8z890KPdaCXMFfYzGeC9wnI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2560;20:Mr8KV+mqvZmcN8TtoO40XuYiOhmBK7CSqndD9KZZGpW6yrjMwPoephTRvpIX7cK78Mu2u6tkZV3OTKUbv47ghVHfprCEwtITAfoOQ39hvlFAp8P4P915B4UzAJcd8Sb43cfvNPFk8hdFmfXffr3qUSbqcKNNhfM1+3dA7ymJUDg= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2016 15:04:46.3587 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2560 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/11/2016 04:42 PM, Alexander Potapenko wrote: > On Thu, Aug 11, 2016 at 12:50 AM, Andrew Morton > wrote: >> On Tue, 2 Aug 2016 12:27:00 +0200 Alexander Potapenko wrote: >> >>> If the total amount of memory assigned to quarantine is less than the >>> amount of memory assigned to per-cpu quarantines, |new_quarantine_size| >>> may overflow. Instead, set it to zero. >>> >>> ... >>> >>> --- a/mm/kasan/quarantine.c >>> +++ b/mm/kasan/quarantine.c >>> @@ -196,7 +196,7 @@ void quarantine_put(struct kasan_free_meta *info, struct kmem_cache *cache) >>> >>> void quarantine_reduce(void) >>> { >>> - size_t new_quarantine_size; >>> + size_t new_quarantine_size, percpu_quarantines; >>> unsigned long flags; >>> struct qlist_head to_free = QLIST_INIT; >>> size_t size_to_free = 0; >>> @@ -214,7 +214,9 @@ void quarantine_reduce(void) >>> */ >>> new_quarantine_size = (READ_ONCE(totalram_pages) << PAGE_SHIFT) / >>> QUARANTINE_FRACTION; >>> - new_quarantine_size -= QUARANTINE_PERCPU_SIZE * num_online_cpus(); >>> + percpu_quarantines = QUARANTINE_PERCPU_SIZE * num_online_cpus(); >>> + new_quarantine_size = (new_quarantine_size < percpu_quarantines) ? >>> + 0 : new_quarantine_size - percpu_quarantines; >>> WRITE_ONCE(quarantine_size, new_quarantine_size); >>> >>> last = global_quarantine.head; >> >> Confused. Which kernel version is this supposed to apply to? > This is the second version of the patch which should've been applied > to the mainline instead of v1. > But since v1 has already hit upstream, this patch makes sense no more. > If WARN_ONCE (which is currently present in this code) is a big deal, > I can send a new patch that removes it. > Probably not a big deal, but please, send the patch anyway.