From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753595AbdKXRWr (ORCPT ); Fri, 24 Nov 2017 12:22:47 -0500 Received: from mail-ve1eur01on0117.outbound.protection.outlook.com ([104.47.1.117]:65248 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751704AbdKXRWp (ORCPT ); Fri, 24 Nov 2017 12:22:45 -0500 Subject: Re: [PATCH v3 05/19] x86/kasan/64: Teach KASAN about the cpu_entry_area To: Andy Lutomirski Cc: X86 ML , Borislav Petkov , "linux-kernel@vger.kernel.org" , Brian Gerst , Dave Hansen , Linus Torvalds , Josh Poimboeuf , Alexander Potapenko , Dmitry Vyukov , kasan-dev References: <8407adf9126440d6467dade88fdb3e3b75fc1019.1511497875.git.luto@kernel.org> <527f205f-0e2f-36c4-25a1-f9d5c55260bc@virtuozzo.com> From: Andrey Ryabinin Message-ID: <7a9aa9dd-8c9b-d0c2-9b13-d8fe06f48722@virtuozzo.com> Date: Fri, 24 Nov 2017 20:26:06 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0902CA0030.eurprd09.prod.outlook.com (2603:10a6:7:15::19) To DB6PR08MB2823.eurprd08.prod.outlook.com (2603:10a6:6:1d::26) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603199);SRVR:DB6PR08MB2823; X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;3:SOTUnDbXosWSn50/UeXUtVkbVX6dXf3ys0GE0HfJHLfmVGBtqJ92wN/1ysrZtDdJFBfukYBPT7AtoPhzXdi8nWsf0yAhu9xZta/FuHkLcp928Bax0wufMOFW6fIk8pSBPXrKt93Bm6mcvD30M0flSJORldYK0dyJVntyNbk2sH+CoCKWEsPhlqEmKCqUTtwNfYKaLZ8DS96DaWYHPEoizu2uYuMpe9MVwRwmaQq0wpngxCle3Z1fz7itl0gtkdoA;25:2qXtp5aBjxZZeYi0JGToJgProwdSt0pR48RxOXQZhxyChhFCFf4rqkNGuCOSIMsC9mZfCHBfRdF2PP349z8A+uB2ng/WhVKKpTbVDjKpYvK3MJT1StceNpuHevTcfTT7o3nXlKs+aKNfXv/aYlD9TzYaxtU0q7nczzjO5cCctM9ZrPZREmI/Che+iUF9PuzY2Bb++6l0aXV3d24AhCtRKRWnTFowCRJ2xockA3BNaHV0W9Zwv84cZUIODSgWY4py6hDN+L+cu85nfVdsxE8yMiKej13lq3BK1B5E8/+k5hQ1XcURjCxpInwUYMijf0wFJ/78uZrUENMV2du4HdqKuQ==;31:eAaD6LIkNOzbXyGfKfvxNvAoJBswGXUSnfYEAk/yF0Mbm9W+GzfoZgxhOUN3mN/2ggE9aUWuEzjZYa/SgfRdzWVs5tplTAGGz/s8tR/u+ztGi4p6edU5otf1W24ZXHfam5Dve77+aVCRelp9fSf+5B6OW1UFepk9AjEIaiHLXT8Cvw/O/YfQ+cs/uEMA/Z1WNj6pRusGjPR65XGatETX551eS1d6hNSWkWa9v1Jadck= X-MS-TrafficTypeDiagnostic: DB6PR08MB2823: X-MS-Office365-Filtering-Correlation-Id: b40f46d5-61be-4905-b602-08d5335ff7f3 X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;20:Jm5o/x1ueRlPlsk+xklAtX0jwqxsh35LalkSs0elfKR5nGjtymuCwUDFn8180Vn5vcxERH7xGnyZy37x7fUupW8OduQVnHH1TcKHSUtjevdUzC8mH4y+qlW7GSQHSagUCXeU6e//oty1gep7mpx4lQpHxIo0X5TuFreKsNmVWShMCAsQu36Kt7mPV6bAwhF5Rng/bZItXMfuZm5zhYsgRGDoTkSKQMyn3CwNbZJddRZjsQIU50o8/9UDjHHl6WEcI1QNU63Vc/AQ9+P6j5YjVU2WNwHqNsEWhEIkNY8lgN1xWN8b+SStqxLHwRLxO3fpa/Ii1AMlWZLY33+ZrKmbkaqdOp5hZexhWZIfIhNFxQAIYukOrIagzBXH09w4dHoqDLbUFedQ4Tvkm/fGtMcNXLJtgfPfq4ZVyl1YO8J6/hY=;4:UmhxvPN3t5WOWGu/S/j6mdkASM8RJo91626UmIt53kC2f8oM2YO9Ae6QiLIOBLoSnaaxIC2BWOLogK935TEPzMMwWaT7GLQmDh8zM9y7A8ibO82MaZaJBR4JR/o8s5MSts/oq7Y5T2otF/F6c91luX0ZfPYfYh78AF/ilyD55ufkO58JhHF0z4qPigUijNLmdl6Ql56jFeKywCD3wQ2c/ob+GSoEuWQjg1D9LJPx9dLOxrmTRg683qhXPgSQHT5Ruo4C/5Bi56Xo9IHEYLKC1A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(93006095)(93001095)(10201501046)(3002001)(6041248)(20161123562025)(20161123558100)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148)(201708071742011);SRVR:DB6PR08MB2823;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DB6PR08MB2823; X-Forefront-PRVS: 05015EB482 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(6009001)(376002)(346002)(366004)(52314003)(199003)(24454002)(189002)(8936002)(16526018)(65806001)(5660300001)(65826007)(31696002)(68736007)(101416001)(229853002)(39060400002)(81166006)(53936002)(81156014)(31686004)(7416002)(76176999)(66066001)(4326008)(33646002)(64126003)(50466002)(58126008)(54356999)(6246003)(50986999)(25786009)(8676002)(65956001)(36756003)(16576012)(189998001)(54906003)(55236003)(93886005)(316002)(86362001)(23676004)(6116002)(97736004)(305945005)(230700001)(77096006)(2486003)(478600001)(52146003)(47776003)(7736002)(6666003)(6916009)(6486002)(106356001)(52116002)(2950100002)(53546010)(105586002)(2906002)(83506002)(3846002);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR08MB2823;H:[172.16.25.12];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQjZQUjA4TUIyODIzOzIzOlRvN0Jhd2tlSHZkTm1FZS8xM0FXVHloT2Fs?= =?utf-8?B?REtUS2RkRG5nQmh0bDdvTkV5T2JMSnQxUmhIczlHVndub2t3REJPTUlKRVhn?= =?utf-8?B?OUtiQk45V1hTZS8zd01TNTV4b1dsdHFXZXhEK3lEWlpXeHBKMnRLcklQUUhy?= =?utf-8?B?Z3lhQkwwNkNJMVNBaWZZY2JWaUVSTWVnd1ZmclhqME43RG9LMnVGdENja1dQ?= =?utf-8?B?em5XM2JwUVZtMmRNbEFKV3NsRXVDR055eUtaNE5ib0FWWmVOMTRNVDNrdyt1?= =?utf-8?B?UnBWZFVTcEFndlQzK1RyYmdiK3VDTmdxVUMzMXVoVjRGWlRaeEFQMTFPSG5w?= =?utf-8?B?djRlWDllZHJ2Tzdtb3VPelRxNVdPSnlabHlQdnVoWDZrZUVhWkxCQU1xbUpE?= =?utf-8?B?eHMrajh6dTAwVmdNMEVFUWlGMjRGUmVhOURTVXYyQ1RwZS9LNUhZY2pLei80?= =?utf-8?B?OHBkMCtlanhod2xTNTcrREZYT2o1bVQ5UzNnbURWUTVhZVRlTW1XUmlETCtI?= =?utf-8?B?OTZOSWhiM3RoVllRb3kwSjVLbmV4dHVZSCtYa2FVa0gwdlVCTXVZT0FMQ09i?= =?utf-8?B?aGQwemVkcEdkNFdseHBpNVZHMlpmVEpFMzJRTitDNVkrQ0F4cnZ6Y2Z6UzBC?= =?utf-8?B?M0tkdWxRR1k1YzAwcXQrTkhuMU5YNnd0Qm1mY2RzNHJNNHYxbndkQ2tyR2J1?= =?utf-8?B?dmxxSlRYVjJUa3I3cnBvTkFzN2dyMGdVRytRQ0UvQ3BXS2hFK0RWOFY2TEls?= =?utf-8?B?alZCY05lekZYcU9wWWgvbG1CMUtsWjJFSWtzd2Fkb2RvWGREK0VFcUdtNEdC?= =?utf-8?B?REw0Z25kdGg1UHZiU1VZSUQ2TTVKSW9TV1BVdG82MG0yeHBxazJCaTFsOTRu?= =?utf-8?B?dENSb25lWlk5NkJQTnlOV0hrQ292Y2ZwTjF2OVBOZXhtNFZ2YkNhK1crdzVF?= =?utf-8?B?bm8rUHhzUGRJdlVNN01WbDBKY3ZVR21XZHZoNGpjSXVla2d5dFRJY084RHVy?= =?utf-8?B?WVRSSXVSZWczZzMvakgwYlZGV2xldXIvUDdUc1N3S1FLUVExQVNQNm1kU2d6?= =?utf-8?B?WDRFRlZoQUhOckVyQXg3TVR4czZBUU5VVkFMSUl3TTlScDcrYm16bFlwbzVL?= =?utf-8?B?UjBtQko0MGQzTUxDUUhVWmRzbmR2RUdSMFpPbHRYMVQ5c0Zicitaazd0dzJS?= =?utf-8?B?NUc3YVYxZGY5TkhXZ2VXalhJczVzWVFXSzVuRjVYTkdBY0Q3VHZaZWQrQnVi?= =?utf-8?B?Z052UjNFWXU5eEhzYy9CUnY2KzJXK25sWU5kRHN5NzRGZVZFMVFqblZzd3Fv?= =?utf-8?B?c3JBV1R4VkZ4QktJTWREbExHeitEeno5bWw1cTBxQ1ZnRTF4WlllZzVUdGox?= =?utf-8?B?VDZHZEFST3BHOFgwR2w2WndBdjlObWpXcUhFSVB3RlZOWnlkZmdZRlorbnlZ?= =?utf-8?B?Y0wwSGk1cGNVdnpYQ01JYmhXSkxwdUduU3Fwa3NuVHdRTGJVeW15UzdzUi9y?= =?utf-8?B?SDZPYnphVVJROGYzb1l2aGlhOFRPQVhTc3FTZ3BaU0NOTVVVODQvM054aThw?= =?utf-8?B?YS9VWlBaZmxZUU1GbWhnMkNOY3FLTkdqTFY4UW5jQ01jaXh1bzBQekxUM3I5?= =?utf-8?B?aUROUGpyQ0dGVUd2akFtcGE1Sy9jUVNubUE4cTY3UkNMck5LUTNqMjBCYXZB?= =?utf-8?B?eTV1Yy85eXhROVJ0UWdEbS84bkN0bW10TVgxUW05QURueHY0VEhGTVozTm82?= =?utf-8?B?RlQzMlhBTFczeFQyNW4zcXNEVTJLSnpGc3JjRGVUcUZpdjZ4M2F4L3BBd3JZ?= =?utf-8?B?OVR4eUNEWU5MY0IvcS85anhFVmpmWkgzbkZwRldhWXliTDY3Z051QTBMS0p5?= =?utf-8?B?enpKQTBjdTVESmI4VmY2dEU2VG04ZDBtc2Q2QmRMMVlHbXB2U0ZpMEVyQ0JW?= =?utf-8?B?aXdHSUxESTcyVkYyc0lCYkt4Yk91Vk1ubTJ0T1NTMEpmWkZIT2tSQkdnNnBZ?= =?utf-8?B?SEtzRDAydXltTkh3UzdKVUZTcVRhb0VoUHdkZGF1bFFYa3BHVWl1MHBVZVM3?= =?utf-8?Q?4C4QDL7cKnXX020tC9YWefsIE?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;6:HE4TrVngggigCLTMwrBc5jv8ELqZAksXbN1umSr1iCFINtXLZid2jNOrfpiOz9p+BXJCc95ax0xsN0ytQBksAnoz4TSDTAwzFYYdNVUYfk1zJYdLKS0OeET8l/sEsZ4u3ACL/uOcKxou+X0MOJ1mTNRDFrkVLH3w2zLEEeu9Eey05BKEtPBBAq7+Mrc37kqvN1J9dhzksZKJsp4k4sKaMDPDmi5fd+q7HXwFe1fSqmyLZkcVkGx9wzbGiLCtcf40jsTL4e/axCqPB5vyQcnk95Sk90OQ44afmGSLf7ZYd9AoZIQdXPfNFffx7xNhD/cT36mvazVatwhgev7fJnXW690gW2/aodohHNWSP2qvtT4=;5:25myE5mmTNAJVIs40ZtlOEqlhe23dys5qcT7zVsOMQUC253lF7IwNeozIZGo3UguCexbaqvcvOVAwpwdpUbVhCNBrPYv9UoI9N02GHSQ3JYzHucTClloo+2wr0AvLfpirUbHttffYxtMdavKJMgqs802RzXkRcK4s3V4aLg0Rco=;24:RNZaT/PN5oxPAxAjMz6/N1briVxxapej0/ErE9eO8sZYs6PAwow2ChufiK4j7PJqG+ekTffGwIH+S1+oTypHttgWGf5wlzRcM68U+AG/x+8=;7:VsiYxv5lk9aj6HVmfAkF3zEWZbcTex1rIwOGr7GaFiGWEiWrYa+QES8131zPP0cZJMxCE9R1iqO3GxT+RZkcOq4IFOBqcFsKO8sER83WrACczh2M8koY5LpFhYOiAOQpnMfh8anm8NzGrMOWHJw7UApqCEqxZLuo/5b/0KrYPEWDuPJSpAGMOd8ClDddJfkPRfXn0/CsmXrWH2hd3f6SVVVWmKB/eiLOKoTnkPy9jAg+zP+yUoS4piDoy4Z1vcsK SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2823;20:VthvWIopjuzhWsCxMq45jDOTLD+5L/4HUwHj9ZnINYI1pJMDUQKKnpqEvuZvcn3rG45oljzNtKq1fTK7I/4klO/bUR+fPPawMUIt3SHa8XZuahWtTBMYzcNspvd0ntEc/K6WAQ4nn3diepM7qhoxYpuVxmLVpjd4+GdTf8nb47A= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2017 17:22:40.7647 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b40f46d5-61be-4905-b602-08d5335ff7f3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2823 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/24/2017 07:27 PM, Andy Lutomirski wrote: >>> + cpu_entry_area_begin = (void *)(__fix_to_virt(FIX_CPU_ENTRY_AREA_BOTTOM)); >>> + cpu_entry_area_end = (void *)(__fix_to_virt(FIX_CPU_ENTRY_AREA_TOP) + PAGE_SIZE); >>> + >>> kasan_populate_zero_shadow(kasan_mem_to_shadow((void *)MODULES_END), >>> - (void *)KASAN_SHADOW_END); >>> + kasan_mem_to_shadow(cpu_entry_area_begin)); >>> + >>> + kasan_populate_shadow((unsigned long)kasan_mem_to_shadow(cpu_entry_area_begin), >>> + (unsigned long)kasan_mem_to_shadow(cpu_entry_area_end), >>> + 0); >>> + >>> + kasan_populate_zero_shadow(kasan_mem_to_shadow(cpu_entry_area_end), >> >> Seems we need to round_up kasan_mem_to_shadow(cpu_entry_area_end) to the next page >> (or alternatively - round_up(cpu_entry_area_end, KASAN_SHADOW_SCALE_SIZE*PAGE_SIZE)). >> Otherwise, kasan_populate_zero_shadow() will overpopulate the last shadow page of cpu_entry area with kasan_zero_page. >> >> We don't necessarily need to round_down(kasan_mem_to_shadow(cpu_entry_area_begin), PAGE_SIZE) because >> kasan_populate_zero_shadow() will not populate the last 'incomplete' page and kasan_populate_shadow() >> does round_down() internally, which is exactly what we want here. But it might be better to round_down() >> explicitly anyway, to avoid relying on such subtle implementation details. > > Any chance you could send a fixup patch or a replacement patch? You > obviously understand this code *way* better than I do. > > Or you could do my table-based approach and fix it permanently... :) > Perhaps I'll look at table-based approach later. I've send you a fixed patch for now, to not slow you down.