From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752046AbcFUKg3 (ORCPT ); Tue, 21 Jun 2016 06:36:29 -0400 Received: from mail-am1on0138.outbound.protection.outlook.com ([157.56.112.138]:43328 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750783AbcFUKgM (ORCPT ); Tue, 21 Jun 2016 06:36:12 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=VDavydov@virtuozzo.com; Date: Tue, 21 Jun 2016 12:59:15 +0300 From: Vladimir Davydov To: Tejun Heo CC: Andrew Morton , Johannes Weiner , Michal Hocko , Linux MM , , "linux-kernel@vger.kernel.org >> Linux Kernel Mailing List" , Christian Borntraeger , Subject: Re: [PATCH] memcg: mem_cgroup_migrate() may be called with irq disabled Message-ID: <20160621095914.GC15970@esperanza> References: <5767CFE5.7080904@de.ibm.com> <20160620184158.GO3262@mtj.duckdns.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20160620184158.GO3262@mtj.duckdns.org> X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: DB5PR10CA0001.EURPRD10.PROD.OUTLOOK.COM (10.165.4.139) To VI1PR0801MB1629.eurprd08.prod.outlook.com (10.168.66.136) X-MS-Office365-Filtering-Correlation-Id: 4971d91e-2a62-4985-c628-08d399bab87c X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1629;2:rdyle50UOQdw0hIIHCcL/jLheX5mfdY2/Hh7ojbv1HREgj5X/ZxhvbA3LHuFEglW6S83fShe09kcKMxOQdPbGo687D1BHWysRmdWpUSpqGDNOr1lbEbzIrzEF9FTzThECExmRaJkxDa79+bokmdHEZGLJiWxfsmt2r81eDfN/nKwSWsGC5Sa1VMG5Tx3yVK2;3:LR3nPD1AND7A5i4PzOajumsD9+pzpz8JLugcn9CTgHlpK5eL9X5iw1ZFx4U9SggXvYjT65RyJtWLzw3dCcneQyLawjakun1sgkURESIcvrKy4ShiA6Pj6aV56DaOOLtW;25:PUt1CNqlbmAiSj5FN7z4+Jycpyig+WDvNMKWMBLtOMFy0ZLYfXapZzHLo9rsLzQrQwiaCIm3nOdV+kuQdGpFJftqLXP8a7BBi5F0l81O4lVHf/rsCLCYySXhOcC5T4V6j5COQmm/PTHi0zDryYDOY4AOfIcyL697A213/8R4D2b2jxFouNkpVtIZDQLThT0+q6yIKFFMuRpVZwuuw2M3ratf4mkuiV3zrjJ5ijadsnAQn9BvSfOpzNVIEZBIqAPRcdz+LRoMGggM/kzDShJ4D4U0Y9I+YHzhh9aVCX1b9TrcFredXG0ZX3lyxEWNOzC9Mbi/8JtsBlI9gl+xRG6PaKTtMzDYhy92UNXljq5tQEl14rmbqJM9ppBsExNcG2+PxKndXrfSynXRHhM0ysAImJ8M4SK9zUBsBVmU86aQxNM= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1629; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(190383065149520)(42068640409301)(104084551191319); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041072)(6043046);SRVR:VI1PR0801MB1629;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1629; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1629;4:kaHkoBqipaeBd3Yv21ylPwHIcC1RRhgZO9aupWvtAUREYr4jN0uk4KdChfENferZCbkBKXKmpDnqXw7QDuEXlDgzAXj6au3sIDhTX/4Cn77QbdECmMdIceMI3Kzx0OnWl1yoD+bnghc7+gAIQn2CXlj5gilh3JJZCAh81dljI8fIBHkuxGPJeLA2pD9dYZLKskFNGxnLCSzMp5cjWuLqoAd4KARw7ArpNVy4/FaZLnv1mVY5gMsCU7+9D3yaigf5Nt0n7mVKBI55XQ4DY6oJSfltdtMERrdLrlt4Ti/xMkug3j7ZS7kxwyHGSoXXGeB9muYnl3uHepW3pN8MQqIb0JYrS/40R1O/UCDFVOWUMB2lbsVUWKXfCTgb0PPlaJ1ZS/GEwqGyYohgfv6SOLGLtRsguL/khath3M0X52kYPydn2//mb4Hf8i0wsqa+n4cMjo4JLZ5IMcAuuahXhqyhtKyxbPa63KHDqCc7VEPdeNQJA26MToS11UYwG57cq2zB2WPgSKjIcMyuungUNIqvejnL8TMs3QPrej8Y9FZQZLE= X-Forefront-PRVS: 098076C36C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(24454002)(586003)(105586002)(46406003)(1076002)(33656002)(106356001)(101416001)(80792005)(7736002)(76176999)(54356999)(50986999)(9686002)(19580405001)(97736004)(19580395003)(50466002)(68736007)(7846002)(3846002)(66066001)(47776003)(23726003)(6116002)(42186005)(2906002)(4326007)(33716001)(2950100001)(110136002)(92566002)(189998001)(97756001)(77096005)(86362001)(81156014)(8676002)(15975445007)(81166006);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1629;H:esperanza;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0801MB1629;23:8qnPwzvhjGvAMpHP+hy/2ZR4uLBCmHjxZ/OsNX6?= =?us-ascii?Q?OKUdnJpLOnzERt1adsGHdlAv0GMg+QqLXxTCE8lY8SA7PYSHlmXsvqKiIc1e?= =?us-ascii?Q?7oWcCzX85Bz0JE/h08/kP0OJx/Y0/kDKPDneXczg+SMPBhgRQLmzwSv6ehrC?= =?us-ascii?Q?noEIpR7eq9c35YRw2vU2etcYSvRY4r2o0kORGiI2Effg0P1m1z3Fs1sW+dqg?= =?us-ascii?Q?bQogSCKI4Rto5IlMvvc05dXEqqYQyRodc15W10+FE4qT3yx8jWJJlnLRNZRc?= =?us-ascii?Q?+m4tUCyUSvFpMPZInK1tV6XoBz2uWrrs2NuBA4uD5yRFzpWJFBQbq0eogNQF?= =?us-ascii?Q?GHITLTNpqr/OkdROZr1R23c9G1Tc2pa6EQoLhIhZjw1R44gQyI1+5NvxU9nY?= =?us-ascii?Q?83qiIV5t7g3ij5EI2GJp+iCDt5NGqylrlV//rU0UJ2Lxv4/bFxxn9njvXb4J?= =?us-ascii?Q?gJzIzKorrQIcDyP64aBIdSqLtMJKyaOGlmo7YUey39M8dhBYvJ80NUO0OBNI?= =?us-ascii?Q?3d7gfQWJ9+Z/e897dObOHyDQZHBHEjF7SWc9fmF+VLwlfHifqdowJOT0UHCA?= =?us-ascii?Q?IYFypFfJRYa3jaMQlLBYjPs+LU0WZL711R4vVDwRgE7LxyC1eLZiIKfdIJ2A?= =?us-ascii?Q?j6K289QrklDeZoqpJL9x1/BiDxn/kKdZBfjYJPRBBv8E6m20Ti6e4/pwecRo?= =?us-ascii?Q?LP/LJAhDVxCA2aNZqJYDhH6GRdmf2hzhkG1uASkA2Tuy/MuJRloXU3Md+k5Y?= =?us-ascii?Q?dwMJDWg0zavHqVBqAac6WHwTBzy5m4j3kKuz6jnc4h53uYStB9OtxDm02r/V?= =?us-ascii?Q?jle1S9ydxAYk2l5vi26zFD78PpmbaYm5zWf8Do7eMR4arFWaCYb0cVl2ME0h?= =?us-ascii?Q?+l7szVVE++juXb727oo9+qSKkRC2JqFvBH4YfDoSXYqL3lWoTKcJy36vH+4M?= =?us-ascii?Q?tMdXgP+9In6H+XQu+EFJwkqTd50mO4j/LbfDOA3l01W2PfUP7HqQVLwskoaF?= =?us-ascii?Q?MVdbJB6o2idpiuN8yCR8SxvpWF77KALSptLvaXg+t7W/2JTKTS/27ScbCEZE?= =?us-ascii?Q?cJbc+U9Lz4zafFkrBM3sOHk8pP4mSJ66GUjgGg1KdeXP9B3jFq0m49v60B3t?= =?us-ascii?Q?O4zVnBgiv4qE=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1629;6:WJPriUHwWoN3aSuv8ouNvP7cMr4OBx9wMhb1ZfpoCMMWZ6ApyAbEfmTprk5UfCe2jACHDTnr9Nhn3S4eSiaAC/4tEQYlA9n8hzitUEbBkyVhJBr76QoMscx7t2thhmBM20H2y2pez0lfqntSADqsvG0+8C6r6iQErUe9EuhHiWOwiC5aIIT37DtHRoZEHaeXL52ULniID7rFIKo8sKtTupje8RFWRjggIlJ6y7Ozbx395qadxZZ1o76naSr/dNGW6bQ8js4H8Gda86cRQajxaCPK+Llz9Kkhmtaq/hK0KU+bmZYT+jH9tP3yFm1lTAUK;5:QS/zYE9xytuqjud8zZFpqmew283g3Txv+MkhXUiFYZX4L61nc8rED/nuiTLu0b/9yiMERYCosZftOHlLiI8Q9Kzyr7h3YXt37Wf//aekp9nsPJbOFTDqt7+xGGap8ytbnTFQLRqizNJccf6X0gHmIw==;24:EI/uPhOOqb3QDS7m9NFUSJm1Pi9q86eFF2K5DMhzQcPVf81V9Jl8P/WNdh7Cn1EsoBC/rBZSyGJLtj3yskTz5HLF7gyvsBKvOZ0gVPD1ImI=;7:t83W+o2kSTTNwp97g7ovA2yOwwTdXkZTa4nMfVr56GUjfNtYgj36sqhbBgOAw+X8ZApRax8/M5jCgGTo5qH3g023+0S1kfaxm1vKTSayYiKjuLKJHh8M2Y9Unm7QCagkla4WLCC8PMGnErSH2Eb8BKWEvKDSqkzjA8g9fMdG4C6XZ99ZwYi5GjkSKyA3YlUdCEFj3SjLfN1TzASWRh0Gse6y+1B5twtWojC3lAeMf2Xpd6+SJJXAvvRCuPL4tdtZ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1629;20:atqG681DSiHtEaCCvG3rBeij/hu9SxpFiqFly0uPQU2HvuGtsUemg/XfAo8gvIK2/8NDirXEnanFVV9sFlmm86GSH0ZNI778xieXq6fTk9GqjU242GsRnYsd0bVbDGm6ijXf2G6gGc3/sO6BFXmp9oqn4esVyqsPrk7Nava72oU= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2016 09:59:21.4762 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1629 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jun 20, 2016 at 02:41:58PM -0400, Tejun Heo wrote: > mem_cgroup_migrate() uses local_irq_disable/enable() but can be called > with irq disabled from migrate_page_copy(). This ends up enabling irq > while holding a irq context lock triggering the following lockdep > warning. Fix it by using irq_save/restore instead. > > ================================= > [ INFO: inconsistent lock state ] > 4.7.0-rc1+ #52 Tainted: G W > --------------------------------- > inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage. > kcompactd0/151 [HC0[0]:SC0[0]:HE1:SE1] takes: > (&(&ctx->completion_lock)->rlock){+.?.-.}, at: [<000000000038fd96>] aio_migratepage+0x156/0x1e8 > {IN-SOFTIRQ-W} state was registered at: > [<00000000001a8366>] __lock_acquire+0x5b6/0x1930 > [<00000000001a9b9e>] lock_acquire+0xee/0x270 > [<0000000000951fee>] _raw_spin_lock_irqsave+0x66/0xb0 > [<0000000000390108>] aio_complete+0x98/0x328 > [<000000000037c7d4>] dio_complete+0xe4/0x1e0 > [<0000000000650e64>] blk_update_request+0xd4/0x450 > [<000000000072a1a8>] scsi_end_request+0x48/0x1c8 > [<000000000072d7e2>] scsi_io_completion+0x272/0x698 > [<000000000065adb2>] blk_done_softirq+0xca/0xe8 > [<0000000000953f80>] __do_softirq+0xc8/0x518 > [<00000000001495de>] irq_exit+0xee/0x110 > [<000000000010ceba>] do_IRQ+0x6a/0x88 > [<000000000095342e>] io_int_handler+0x11a/0x25c > [<000000000094fb5c>] __mutex_unlock_slowpath+0x144/0x1d8 > [<000000000094fb58>] __mutex_unlock_slowpath+0x140/0x1d8 > [<00000000003c6114>] kernfs_iop_permission+0x64/0x80 > [<000000000033ba86>] __inode_permission+0x9e/0xf0 > [<000000000033ea96>] link_path_walk+0x6e/0x510 > [<000000000033f09c>] path_lookupat+0xc4/0x1a8 > [<000000000034195c>] filename_lookup+0x9c/0x160 > [<0000000000341b44>] user_path_at_empty+0x5c/0x70 > [<0000000000335250>] SyS_readlinkat+0x68/0x140 > [<0000000000952f8e>] system_call+0xd6/0x270 > irq event stamp: 971410 > hardirqs last enabled at (971409): [<000000000030f982>] migrate_page_move_mapping+0x3ea/0x588 > hardirqs last disabled at (971410): [<0000000000951fc4>] _raw_spin_lock_irqsave+0x3c/0xb0 > softirqs last enabled at (970526): [<0000000000954318>] __do_softirq+0x460/0x518 > softirqs last disabled at (970519): [<00000000001495de>] irq_exit+0xee/0x110 > > other info that might help us debug this: > Possible unsafe locking scenario: > > CPU0 > ---- > lock(&(&ctx->completion_lock)->rlock); > > lock(&(&ctx->completion_lock)->rlock); > > *** DEADLOCK *** > > 3 locks held by kcompactd0/151: > #0: (&(&mapping->private_lock)->rlock){+.+.-.}, at: [<000000000038fc82>] aio_migratepage+0x42/0x1e8 > #1: (&ctx->ring_lock){+.+.+.}, at: [<000000000038fc9a>] aio_migratepage+0x5a/0x1e8 > #2: (&(&ctx->completion_lock)->rlock){+.?.-.}, at: [<000000000038fd96>] aio_migratepage+0x156/0x1e8 > > stack backtrace: > CPU: 20 PID: 151 Comm: kcompactd0 Tainted: G W 4.7.0-rc1+ #52 > 00000001c6cbb730 00000001c6cbb7c0 0000000000000002 0000000000000000 > 00000001c6cbb860 00000001c6cbb7d8 00000001c6cbb7d8 0000000000114496 > 0000000000000000 0000000000b517ec 0000000000b680b6 000000000000000b > 00000001c6cbb820 00000001c6cbb7c0 0000000000000000 0000000000000000 > 040000000184ad18 0000000000114496 00000001c6cbb7c0 00000001c6cbb820 > Call Trace: > ([<00000000001143d2>] show_trace+0xea/0xf0) > ([<000000000011444a>] show_stack+0x72/0xf0) > ([<0000000000684522>] dump_stack+0x9a/0xd8) > ([<000000000028679c>] print_usage_bug.part.27+0x2d4/0x2e8) > ([<00000000001a71ce>] mark_lock+0x17e/0x758) > ([<00000000001a784a>] mark_held_locks+0xa2/0xd0) > ([<00000000001a79b8>] trace_hardirqs_on_caller+0x140/0x1c0) > ([<0000000000326026>] mem_cgroup_migrate+0x266/0x370) > ([<000000000038fdaa>] aio_migratepage+0x16a/0x1e8) > ([<0000000000310568>] move_to_new_page+0xb0/0x260) > ([<00000000003111b4>] migrate_pages+0x8f4/0x9f0) > ([<00000000002c507c>] compact_zone+0x4dc/0xdc8) > ([<00000000002c5e22>] kcompactd_do_work+0x1aa/0x358) > ([<00000000002c608a>] kcompactd+0xba/0x2c8) > ([<000000000016b09a>] kthread+0x10a/0x110) > ([<000000000095315a>] kernel_thread_starter+0x6/0xc) > ([<0000000000953154>] kernel_thread_starter+0x0/0xc) > INFO: lockdep is turned off. > > Signed-off-by: Tejun Heo > Reported-by: Christian Borntraeger > Link: http://lkml.kernel.org/g/5767CFE5.7080904@de.ibm.com Reviewed-by: Vladimir Davydov