From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754206AbcHAQTe (ORCPT ); Mon, 1 Aug 2016 12:19:34 -0400 Received: from mail-db5eur01on0117.outbound.protection.outlook.com ([104.47.2.117]:11010 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754104AbcHAQTN (ORCPT ); Mon, 1 Aug 2016 12:19:13 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; From: Andrey Ryabinin To: Andrew Morton CC: Alexander Potapenko , Dave Jones , Vegard Nossum , "Sasha Levin" , Dmitry Vyukov , , , , Andrey Ryabinin Subject: [PATCH 2/6] mm/kasan: don't reduce quarantine in atomic contexts Date: Mon, 1 Aug 2016 17:45:11 +0300 Message-ID: <1470062715-14077-2-git-send-email-aryabinin@virtuozzo.com> X-Mailer: git-send-email 2.7.3 In-Reply-To: <1470062715-14077-1-git-send-email-aryabinin@virtuozzo.com> References: <1470062715-14077-1-git-send-email-aryabinin@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM3PR08CA0029.eurprd08.prod.outlook.com (10.160.207.167) To VI1PR0801MB1982.eurprd08.prod.outlook.com (10.173.74.15) X-MS-Office365-Filtering-Correlation-Id: 131685c6-d14f-45b4-c64d-08d3ba1a4b64 X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1982;2:31vBZ1QDsmbKkeHXrAxE1IS6qz5iB/8za+X/R/4Lw3iPUqHtBPclhhHtY6kTrm1N5oaHB9aNWM0/dMcHgZMThHbaFwzzFv9SjGleW98AcES3vNR9MQGJCcSX3ZxDtUaRHi9XP9I/01bcSqQkCGS+qpTBf2FGDPFGSPuVRu16TZVbcoFhpLSEtPwXRm4B3NEV;3:TKEjkAaLDSybldPvwwaAsvLzTEJrb5HSetb6OT+JnZWIT3lJdn7bRQ1G+a4EveObjeOuD/6rZvBm1QgwqywPN6xvnMs9bbEfv+88WP8nfuHjTEuLZpiU1j7BicRtmgvM;25:BlSqWAO6wHzeI07F1Dm5PfkexA/JEeC/IHtfTiVwTYnaU49ottA6QkjYA29XU7XGXdSiRgfLGUhg9sUqi1iI/gJuAOc5PwsOlal99IgX1zFr8WxKeQYbNaWR2vQ5YZ1IB71wZVDl8HIzcoFz2uMQ3FCcrOg+H0DotSGK58HtgkzBGXehMEJFZT8Z9rK8uvIY3I6Q1mf2zApkb6UORBik6sa/mIyB+zen+fXdkXJqafjx7I8m8OR2nrzrUj2EPdMLdWdcCmPmoYvi3uwjIieJkv5ZESFZCUBFutZ2Omx8cytEiQWr3zrhVMvRVGkc6/spAbgYdVFsEARraM7+F3hJ/cQVmkAuw25+0m4D3z94BMUnLtZJw8HGwhonLgOJ8sJvS5f6KHbapphpUK3DXrv6yA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1982; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1982;31:HHWkBVYLna594DBgtf8ra6qcZQsnZgum2wTZf4Acw1Cxfrpr21+YYxAi74JW5j4bMoAsII987Ful3CBuONoLfiyyEpWpgIyZhy4uqwsFKmh9BJvyBvhdLv6cDSHco8SQzozp7T/9umCzVM0SpGISLuv+/wn7LIWjDROsm6a5uNlvil8u6kZYXUHLt/4dsGl4uswT0/LnEK6I+xs03dRR28w9kSFSdTcUu+yMyBg39zI=;4:adgUVrs13ptn0gY9Z4FJQpH6Kkpk5TNGpMLs5ub6ItkdfRvlX5bZa1w/p9SJA0c6M3AWclLXB1lZty7QhsIOK+392fJo93EovFKqG1dvdCQDTLrcm2keFFj8uShdqyWfZPzBlXmHZgijdx4hGfHMc2FN/gxx4JqZ5RIlacDddmqOxySn/OF3a9nN5n+zXfMXqwEZyR9r67k0hBh1ISNueH+yGHRWhF6U/+9iMqiuQGAAFmWB2YVY33m6Au7oUEO/ZMiTnSXvcfNdcCMvMZuBbqUIWXZMrqJbc+E1hbsXdO54xXx5X/f0lb5qeWMp4OTssjJ2ZLiU/3h+h1k0gtIMMoyIIBqqTSZi9cGanJjWVBr7sYQczwT4hVGyhvRX3O6neyzbXwcrfXPv2XT53Uzkt9Ic/ONKuO5bL/14IANUrXY= 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:VI1PR0801MB1982;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1982; X-Forefront-PRVS: 0021920B5A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6069001)(7916002)(199003)(189002)(97736004)(92566002)(76176999)(36756003)(47776003)(8676002)(101416001)(81166006)(42186005)(81156014)(189998001)(3846002)(6116002)(5003940100001)(107886002)(4326007)(50466002)(110136002)(305945005)(48376002)(66066001)(586003)(69596002)(4001430100002)(2906002)(77096005)(50226002)(575784001)(86362001)(33646002)(106356001)(2950100001)(229853001)(68736007)(50986999)(19580405001)(19580395003)(53416004)(7846002)(7736002)(105586002)(76506005);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1982;H:localhost.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0801MB1982;23:owc26utXz6jckco57slZuDvZMjgzVc/0r0A1o3b?= =?us-ascii?Q?9n7WtsGm970Zpz7KdVd3n3sST0NRo7klrIjaGa9SsuiGr24h4sKmhrnA0aLt?= =?us-ascii?Q?Zq/khbkOLqF08INAtF0uoCfBzREqfYq58+nv0up1u3uoqQv0jJFkd9XveRCh?= =?us-ascii?Q?rIrOkYVJEZUXTQeViVzxZCSr/snSbMTckN/s0QMqUMrJfqd9UBX7j3EmjFu3?= =?us-ascii?Q?upARVsZeIbpFGw/UzprdRd6PWtG+kpibzZOGY+OM1XZe6OuPJ3SDeyEISZG1?= =?us-ascii?Q?5McxKmtBh/j1AQ+SG/UkcbrBUHS+fMxoCBcpQkflLmky4D/QDcdgmwVWC44D?= =?us-ascii?Q?7njJN/gJM6a3TN6vTWkvSmVA/wGt930a2vftwMQNCb+K+PDKJkib7KKg+tYn?= =?us-ascii?Q?05M5AtVqnRR/wSAMgJQfPIidcbcJTwQ43ZjaMg2IeConeAQBdxfFuT4Tyf/H?= =?us-ascii?Q?ssuUoms76SMzU+gzkLjuFCz/esBtVG54cGErziTd9BH7zL0W+i8dY/ZNBt+2?= =?us-ascii?Q?N+rqXIZnnpXqpj4WVwURnma2vrgafFONdMeB5CaetCSSpxj380P+LX562VRn?= =?us-ascii?Q?vyLa3ps70GMBDVpgmmhqB1+Kv7kk0BSf7+nFA2jjFicLMAKvXoH2n5+GqPng?= =?us-ascii?Q?OuCbTuyFj/z2Ra2tBhRCxzkDkMl/rZoup/e/OocD6HFt5BizECl5tnDJUEkA?= =?us-ascii?Q?/nWs5SZfJ9A5jGy9thLASrPGUu+UoqBN4DaPYO33zzBj3MS8sVLdwmvRiDOD?= =?us-ascii?Q?bxjG1WOTlGgzV1DLveCW+TE1hBMaOtpf9y4fCv5nVPteUz91i5CJ+75b3qQ+?= =?us-ascii?Q?QuBj0efQIIYq13IUkJ04ROOikVPO2wTDQhtulrhxWNXCHMyLagjlj8lWNJla?= =?us-ascii?Q?dKgLL8e7RefUJbSJVowPr3b0NEYIkZRwY9RDyfXNW/IJXqxH5RmMtTl6KKpM?= =?us-ascii?Q?iJ/wgdarumtYwJTZF1LJHGO38r6d6wOWsU6pNyr6G8XjHGsEau5BivLUiHiD?= =?us-ascii?Q?SV13Ug5EbwHhvEX8q8/KJWSY2SonPfZElFAef+RevmnyDgNCVetpVXV1Nqm1?= =?us-ascii?Q?/knifYuy385BpHdoHkbzfk9H4M/heD4McWZrTPfUnP1UCHk1Tkq3e+9HQhOw?= =?us-ascii?Q?5a6/t4ataSdwNuIsKj8f1SmUHJruXLb+Bl7YN7K9ID/94/7Rh7gr80q3Ur8e?= =?us-ascii?Q?QlebUlqC0eV/OrU4oQkOwcMn9a/IsY4K5694T?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1982;6:vlGXnABdpVTY8nLftWdbBCPP+02FcUxokGKIxMqHWKNXvn7+FZKvb7cifeUx2+iEiq3LxHu3ULfzoNNp6c/TF/GuiB/v38bD++A5/XDiB6Q6Fd2N3Zjluhc9MHbKyTvf3L4rOlu5lznKVSSr3eyLufn/nNyUqZ3JM/sz8UlQutwIWmFI4dMSDYDVIw/3DIsCNUXnKY+w2qMB7w5Rgcx3Oi5lKfciiBCyDeaMO12tI0+LH5rOwdpB9JC5EY3PLmlIpibnfQ8OCkfGhTSlfPgegWRZz2wftu0VvvJf88znpp0sb3Mh6ub2Rd0FdnFABmCU;5:2RUR9cUOHE0pPDhEPSOvpPXxkJvK6NbIZCW7BXQlC9OZwbvWpmjLYIgg3EsNQEdS/+yU1CI2KBXMWyc4dc+712NtyhQfq/zRrxwVrjex9o2r/8tUUWCqi04aNBJqHt3VFyW4CIAt7VZAKQGeV1Pgqg==;24:xL58EYB1j8jQeZ5ReFIU1AyQZWU71gSYKphjfvz1oQWkCRmRPpOfLOxxaKFmLHqFHAP/D1nmF41rG6oowJ4iLbq1I2nqVA2EcU+66R7YRSQ=;7:Ukr4riFg+53Ql8ZVwpPYQUznpEpF+unby4kiTMW7efyA9+GGDM7mzzf0hacEdC+gOllIVzmAne+/wBfq0Ss2vqDxqV3GQsFcyjKmSIX97ZNYekNgaMuUSFOBHgUE7ehHC50J5k5rYORVNIALBs27Px6rA5o5viqFHaU1sUKGJztRU1KlNSoaxeyIHtdRsen+cxGaKyNxwWYheWJwxv4ibczKV67OmS3AH6b5VBS5Zt1MHqq21F75zF6y9RoLZo7a SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1982;20:LNA8Kn7DK/d/SRwJqYSsemnXbk76liqmGw+LKjFvIWdL+bxal0pAS7eoJBjchNnHoOcm6QcwKJ8C5zCuYHACOM8X14sG0VqbXLO79r4jGn4SO2XYIrDbepa01cqoM45KIxEZFs2v4xdedjTrwr+24Q+Mcgq6TuTFSCzdRCHsrCE= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Aug 2016 14:44:07.7596 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1982 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently we call quarantine_reduce() for ___GFP_KSWAPD_RECLAIM (implied by __GFP_RECLAIM) allocation. So, basically we call it on almost every allocation. quarantine_reduce() sometimes is heavy operation, and calling it with disabled interrupts may trigger hard LOCKUP: NMI watchdog: Watchdog detected hard LOCKUP on cpu 2irq event stamp: 1411258 Call Trace: [] dump_stack+0x68/0x96 [] watchdog_overflow_callback+0x15b/0x190 [] __perf_event_overflow+0x1b1/0x540 [] perf_event_overflow+0x14/0x20 [] intel_pmu_handle_irq+0x36a/0xad0 [] perf_event_nmi_handler+0x2c/0x50 [] nmi_handle+0x128/0x480 [] default_do_nmi+0xb2/0x210 [] do_nmi+0x1aa/0x220 [] end_repeat_nmi+0x1a/0x1e <> [] __kernel_text_address+0x86/0xb0 [] print_context_stack+0x7b/0x100 [] dump_trace+0x12b/0x350 [] save_stack_trace+0x2b/0x50 [] set_track+0x83/0x140 [] free_debug_processing+0x1aa/0x420 [] __slab_free+0x1d6/0x2e0 [] ___cache_free+0xb6/0xd0 [] qlist_free_all+0x83/0x100 [] quarantine_reduce+0x177/0x1b0 [] kasan_kmalloc+0xf3/0x100 Reduce the quarantine_reduce iff direct reclaim is allowed. Fixes: 55834c59098d("mm: kasan: initial memory quarantine implementation") Reported-by: Dave Jones Signed-off-by: Andrey Ryabinin --- mm/kasan/kasan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/kasan/kasan.c b/mm/kasan/kasan.c index 3019cec..c99ef40 100644 --- a/mm/kasan/kasan.c +++ b/mm/kasan/kasan.c @@ -565,7 +565,7 @@ void kasan_kmalloc(struct kmem_cache *cache, const void *object, size_t size, unsigned long redzone_start; unsigned long redzone_end; - if (flags & __GFP_RECLAIM) + if (gfpflags_allow_blocking(flags)) quarantine_reduce(); if (unlikely(object == NULL)) @@ -596,7 +596,7 @@ void kasan_kmalloc_large(const void *ptr, size_t size, gfp_t flags) unsigned long redzone_start; unsigned long redzone_end; - if (flags & __GFP_RECLAIM) + if (gfpflags_allow_blocking(flags)) quarantine_reduce(); if (unlikely(ptr == NULL)) -- 2.7.3