From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757548AbcJQMKp (ORCPT ); Mon, 17 Oct 2016 08:10:45 -0400 Received: from mail-db5eur01on0094.outbound.protection.outlook.com ([104.47.2.94]:63720 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753309AbcJQMKl (ORCPT ); Mon, 17 Oct 2016 08:10:41 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; Subject: Re: [PATCH] kasan: support panic_on_warn To: Dmitry Vyukov References: <1476465002-2728-1-git-send-email-dvyukov@google.com> <2b39f90e-2c67-fafb-dc48-f642c62bead6@virtuozzo.com> CC: Andrew Morton , Alexander Potapenko , kasan-dev , "linux-mm@kvack.org" , LKML From: Andrey Ryabinin Message-ID: <4f2ba672-cb6c-a055-6bfa-8b88030a74bb@virtuozzo.com> Date: Mon, 17 Oct 2016 11:39:21 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.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: HE1PR0401CA0043.eurprd04.prod.outlook.com (10.168.27.11) To VI1PR0802MB2558.eurprd08.prod.outlook.com (10.172.255.136) X-MS-Office365-Filtering-Correlation-Id: 64b2929d-4828-4223-97dc-08d3f66911bc X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2558;2:q2bynw3DrR6Yxn0jbdjmhTGcyKCRn01a7RQR2SaWq56IP2Q8JoKx2pgAQKq3gcBcknK8SdzeVAbWf64gb7OLXzJTVRGET2dbQ39Eisf+Z5/UAAH81atE08PQC15ROk7hmP44U1e/kx872Zxl5DtQ8s1Xguw9J6rMb1TKyesHvZzpQX0fGJKjes3nG9TZXXnEmkO3bSdsgo6FEmNkJQP1cg==;3:WMtAhxLLIiL8OSzCVS1xfl42YMhzHWSjQualb0E1OqR7WD3hOSgQnsc1Q+nQabuqBrCIedDhL+S6dxab8gUMdAoQVTF0pChH7Tm2LAgKVSJdLuih9Pmd/Rt0MThfh+0caObCbb8vnI3NTZMvkEv9tA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2558; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2558;25:wcs6DOUiQG9p01dspb95QKhjzkP4ZfnSo6UqKrD9k/7ma+NhlwMZXgPB8eKAZVJIRbHX43hWX/24+YsfsJIGcoAoDwO5EF/Ty1OOiJmH0wnGxxciTSkwSqiLMMKei/0zaDLOPjxxn6r792DyyFkjmOAyxPsDt+oGY8/e31Z+reG0b3PBZxKbTKPodbqlta9NWR45rAOqEuz3EWfBQwdDNY0Qc5PNL/8HiShy/tagjo1zGLyiczmWnghzWX9A3t90N5SamNQDz6mS1ZfImyTUAu7znVr5lQvh2Av8GYYBv64Ss9GV+jwC+LRX4X9nVhOgtgL23b9e1D6Zxo7/f7uk7ZezVw7kpBLSNn9lbVY+p8BuyEC1fg8QS1UrXagLEdU7obfbdGrCjAT5LJOzV+YYHFz7tElA2Zfw2pgGcynLT5hGYenrtzmVXTinKP6fKUJkp6HRqmBkvXRvRadC09uynFqTWJOHFFR1hB6bmcRcPV+N5292M469zygVQ2A6as/Dr8N3Mu9Yp4J9KHTq+emvh0zTKoZoKdJ7PBOwPQ9TnITcx/2eJVN+ciJfbp2gnjqQe6Ts3a/I7KQbMScb2Ra39vr3J1YvD/b7e7yqEqMo8z0fTRdBPC12skwdAmx/VzGfYkEZYHTxAxKW0A6XM5+cYtGnN8PZUv0SVHrrFJjhYGJNQ6NMGGdPASNuztqQ2Ew2nChDfkYisGArpLlpRSaQR+mba0NjfFuS2ZsYDLAMnLuRv5YUpfq7t1XsH4Jc9MOt X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2558;31:fGQ15g6cqTPrg0gaH5AosWd+8mQgPuqY3wcDzbzc2cmFkVaLdwuhknfntTd8rgZAdT2j/BMiCpdbS6RmoDMuM1gzMZ+uMyC1m4NK7s5Ycncs5YKX8uo2PIKFAYUBs952pUBjbyqk5emtsZnsRKhLcrHYl19Z9j7ezgT9JETboUnYXr5ICFrzsZNTMOajynxsqTsbRgXY9yVk0EW+PkTTXdqidC78FdYvYidpcytjLT/K3WXLQYz7qt7QEO5sZi1095RICdKKP4j1UUSxCxnrpQ==;4:zP3y/23sE1ZFrauZsVGma5Cen1aU281K28yNbWscGtV7HBN3eXTB914bD5BvXB1UOKXVL6MWQe9tzyLyjGZ2g+hmfXZ0ipY0uRw588qZp/oMm5RUi+HDeq6s0SQWj9rslEqnyobexUAOHdvQnhGg7BltTLjSWSLsszIzTiqqEKpksKNo9+XXXtHNeNqOSXiBhtYYgzZgiX9vgQgiueuF69kXDMfBJ0xAY6B0N/jIEufoIuweV3/dplUovhv8m3iTzJuNz7ubgLU9cyLfLuUaPLH7vueZXccjDyy3VXav6tPO5hR9c/S+id2Q0OQSEeLgdiNtm4SbyHT4u3kEgRlAZclE7xR4OM8dj9IQcO8UjUzJwT73SDz9o/vQWvU5o8ln0wu5jq/figtlwHWNHLDCc1bqf889zO5T1JldRX5/QWvs3dQslH3G2FmV3q/nYryKDF10g+NaQtXbsp2VFB2IyMScYG8kK5Oqp0/bvJ5FCK6/R973/2VWJCFd/7Unoq0CWcUZ4MZ9Jgz4nnoBd3Xl3XCY7R9u3caTx00BSXKkctQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(215639381216008)(9452136761055)(211936372134217); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6043046)(6042046);SRVR:VI1PR0802MB2558;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2558; X-Forefront-PRVS: 0098BA6C6C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(24454002)(199003)(377454003)(189002)(92566002)(66066001)(101416001)(76176999)(54356999)(50986999)(105586002)(65806001)(65956001)(77096005)(47776003)(19580395003)(64126003)(36756003)(6916009)(31696002)(2950100002)(6666003)(23676002)(31686004)(42186005)(83506001)(68736007)(19580405001)(65826007)(33646002)(5660300001)(106356001)(86362001)(575784001)(50466002)(81166006)(81156014)(4326007)(97736004)(189998001)(4001350100001)(8676002)(2906002)(110136003)(230700001)(7736002)(6116002)(7846002)(305945005)(3846002)(586003);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0802MB2558;H:[10.30.19.223];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4MDJNQjI1NTg7MjM6Q0twWVZiKyt1Ujc3N1RQZlQ1eXlzSVFk?= =?utf-8?B?Z0pjSWhSVTlrbzBoSENrZ3B4NUV2QUpaZ01sUU1CSS9WWVNFTGd1Sm5ucnY1?= =?utf-8?B?RlBPaEE0a1QrRWRPNHZRUW03d1JTMjduYloxUzViR3hJckJCemVRdEEwM040?= =?utf-8?B?M290ekhRVFRwUUJqQVJNUzBOWWZBODNTWnhnQWR2YjJtamRKMEltRVB1ZEtU?= =?utf-8?B?amRNL1oyUVFGeEhlS2pxdnFzRCtxRkJNUFpSRWRJZGZuN215cWo5SEpBQTBs?= =?utf-8?B?T2hIS0hBSXdFQkpJTFhaQ0RwOUNBUzFuZlhOZCtXL29kSE9BZUpRZW1aaXFG?= =?utf-8?B?dTBsYWhXTnFrRFo1THU2ZXlGOXh1bWtjNE93U1V6NEdIZWtRam9UamdTNEpB?= =?utf-8?B?SGMra2lTRHY5TUJoMHpONHBsV1d3UGQvQU9BNW5NQ1FsS25ERFVjNW9KTkQ4?= =?utf-8?B?eWQvVUR6OW9RdldTdU9hUGZpWTBvSlBiOTNRcWdqZkFsbXdONHdCdXQzZllt?= =?utf-8?B?NnZKTi83VTZPeC9LdWZncEY4WnpMZEFEMyt5d0tYN1pQd05jMG5semlBOFR5?= =?utf-8?B?M3FkZzJYR08yY0pFN1pEYW5jS2RXYmtGVG5xU0tuRVEwcUxjQjlkWDdFUGZU?= =?utf-8?B?SWJ0cWJmUlI2bWdOM2hMRndLd3ZTNkhrajFCb3NRazd5dzBNWEtWVUVZTkFW?= =?utf-8?B?U0xRUjRyWDlQdEs1NDBTUDlJenBHeEpremc2TGxLWTgwTWw3anpXeEFMMXN5?= =?utf-8?B?VnI2NlhrWWFpY3dZRDhGSWlBc09zd1JOK1FEWnZFSnFhTlUxYVdCbGF2NG9O?= =?utf-8?B?cnFOQy96SkZJSVJZallKRzRHV2Q5dWpNckVmSVljUXZ1MHpWNE1VVkFrN1B1?= =?utf-8?B?d0w2QkZ4SlJLcE5RM2NHa1ZTdHNSMHZRdlR1N0VqQTdvckwzM1ZFVVhtclJt?= =?utf-8?B?WnEwM0hNUXBVSTFKa0p6YWZYZ2FBWXl5UlVNWFd2bzJ3Mk93VEFhZ3dIYWtE?= =?utf-8?B?SVIwZVNqenc3cFZXakJjanIwbTFWOG12Z3d6SmRnTDMzYSs3aUwzOUErUTdC?= =?utf-8?B?b0VJa3N2SENiQW9nRGJhZlRWYnExN1pKN0JoYjk2QjRaeWttVW9XTFh5ZkdB?= =?utf-8?B?dzVnVzU5ek5qY09NQ2hiTFlsTjBHdmhadVplQjN0RGRiVWlGcDdWVGdVWjVF?= =?utf-8?B?T3EzRWdsVVd4aS9WVFNtQkF2TmV2dVpxcGpac3VjMDU0MTlGMjB6TElKNnlI?= =?utf-8?B?RlhRdjcxRDZjMm4rTWlxaVV4SkhyZjBGNGl6Y1hPb0NycUJTVG9pTmlQc1Vn?= =?utf-8?B?T3BxWjdkWjZzNk9sQ0pySU1JUDFMQWs1Skh2cFZuY0ZMWktYSHlaZTdJeEJv?= =?utf-8?B?cGlrTWNISm5Sa1VkMDU3aHBoUk0vMHQ3czBYM3M0MndZRG5qbGFZbi81MDQ5?= =?utf-8?B?UlBCWitxOVBocXk1UFN6M1Y0NkV3TlE5TGk3M3hqbnJuK3h3NUNjREEyZU01?= =?utf-8?B?NDJ6K1ZMK0RacVJhSnZ6QW1oNHAzMWl4VTVnSUFFbktQOXBCVFJuSUxXZnVD?= =?utf-8?B?bm9vdUZpcUh2V0FJWWEvOVBkcUw1KysxNTJyTmNhL2JrTVI1aVE0VUpkc0tL?= =?utf-8?B?clR6d2s2Mkl2TmpBOXhMVnVoTkxSRzhDa2w3T3lNQmluNS9ucGdmNUpMNHR1?= =?utf-8?B?cU9BUUZHUm9nQ3VUblZYZ1NubVZwcThGNUQyQ1F0ai9RMWdXQ3I3ZURGZEtN?= =?utf-8?B?bU04eGNaR1ZMS3pwcnU1MGJaMW9zQXcyckZFSXlEYWphTytPZ2dmTjk0WHRj?= =?utf-8?B?a0NlbUdJdktoMjZTamh1SUplQUM3eE1mQnpUM0RkcWVsa1JtQT09?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2558;6:8+9b2Q/P8iqQTnt1NSF4QC/ABY5HeMHfXQj9P/1IS60n8K3u8s1n3xLtkUin3nZ365I1UOZLB2Qj2UcsUJsh0OrfFsT7AxmOiQTMNiSnUXkJOX6z9ScmGhXk7jtq7pQxMDvYM2KUxqKfMEcqO1fS748CvJFz+QYzEZpHfvF6AZY54/G+F401F/zchkgm4J+oFLv69HfXug1KahhQfxJXDhx0TM6/8DqfO/5fDZiLvFTdKFWxWTN++t5NSpEJInY/jUb6BtHoXFLQC2/4A3pleWD9m+gtGjhnAoYNdpi7+jc+8G480Sqocs57cUyOR9Jh6pM4JNJw7c+Ojh4+b8INNg==;5:9sgmBuDqq02539NGJxXl0aciyP/rBF7ECIqhrHNIhvM8dw20Ju0CngQfgRsHWWvtiugwzKEAsnihs6lQPQNSKvHKlWNVi7Bg+Zf81bHFgyNY/jDaJbR6uT9ohcoxH2RNTTPi1CKc43tPNicl8klq6PXSDX7Ju6qaZuqqaNV+pVA=;24:uCqXT+r3ViVVQSIHbaez0DFBEZDN514v0igWuKbS2VA7kYW5csX/rOaCkBMRo8I55QPSISLDRKmn8oVHPYUnBE4NtukYJ47ldBIPvyMPSO0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2558;7:TIjueWFKAuCdXa6fVuk+YqYkfQ/vmrgIJu7t7stwGmh2N2kqFsa+8bw99CNv79aBhXqcFHJag/RfGWvp+/ifIMrAyEKBPbtPWlnWfKb3oAf7RISf8e6zNDV9UvrdTMKZSyXIlwh/Rdm/73FOJrkF+kNaCv+ecbR/2QeIW8kNOCwMn0MUeMMcSghDtX1p2ENcO06BCtamQjx4AB6ls0V9fRi/wXwGwraYa6i+YzqJPG1o6RrX788To2MnCgF4bER4TlokrVHTh/BeaQhlh7xA3l7YFuhJjukZraRhDIeM/jWMq6fFc/4Puh/WI47dPG94cTNKZMRxP+2oM2ujbOgYW0bSd5MaEh/C7aHYeK47hwM=;20:npFOZC8N6kyM1cyvsojgBm3VjZPlaWEFfnGXSMqe/Gan2FLPBn9lJtiDB+8JXzUhxfCmIONB3GUOld4dy0Wa720WC13o7vcyPeyVUjOiXMN+IGXRjN7BlAmM+Jn8oEZQAyL7dZNhJzWcSTUX77h9ztYafg/olz8kQGsn3M/5v0E= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2016 08:39:10.9435 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2558 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/17/2016 11:18 AM, Dmitry Vyukov wrote: > On Mon, Oct 17, 2016 at 10:13 AM, Andrey Ryabinin > wrote: >> >> >> On 10/14/2016 08:10 PM, Dmitry Vyukov wrote: >>> If user sets panic_on_warn, he wants kernel to panic if there is >>> anything barely wrong with the kernel. KASAN-detected errors >>> are definitely not less benign than an arbitrary kernel WARNING. >>> >>> Panic after KASAN errors if panic_on_warn is set. >>> >>> We use this for continuous fuzzing where we want kernel to stop >>> and reboot on any error. >>> >>> Signed-off-by: Dmitry Vyukov >>> Cc: kasan-dev@googlegroups.com >>> Cc: Andrey Ryabinin >>> Cc: Alexander Potapenko >>> Cc: Andrew Morton >>> Cc: linux-mm@kvack.org >>> Cc: linux-kernel@vger.kernel.org >>> --- >>> mm/kasan/report.c | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/mm/kasan/report.c b/mm/kasan/report.c >>> index 24c1211..ca0bd48 100644 >>> --- a/mm/kasan/report.c >>> +++ b/mm/kasan/report.c >>> @@ -133,6 +133,10 @@ static void kasan_end_report(unsigned long *flags) >>> pr_err("==================================================================\n"); >>> add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); >>> spin_unlock_irqrestore(&report_lock, *flags); >>> + if (panic_on_warn) { >>> + panic_on_warn = 0; >> >> Why we need to reset panic_on_warn? >> I assume this was copied from __warn(). AFAIU in __warn() this protects from recursion: >> __warn() -> painc() ->__warn() -> panic() -> ... >> which is possible if WARN_ON() triggered in panic(). >> But KASAN is protected from such recursion via kasan_disable_current(). > > But we have recursion into panic via kasan->panic->warning->panic. We do, like almost every other panic() call in the kernel. But at least it's finite. So, if finite recursion is a problem for panic() it should be fixed in panic(), rather then on every panic() call site. > >>> + panic("panic_on_warn set ...\n"); >>> + } >>> kasan_enable_current(); >>> }