Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1080963ybl; Wed, 14 Aug 2019 10:23:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqzXAFbThK7pxQFinTw1HANpkmq1fUAcg5YImK8CLjnHaAh02RerXbueVAaOjSVjLEsqixly X-Received: by 2002:a63:c0d:: with SMTP id b13mr236082pgl.420.1565803390395; Wed, 14 Aug 2019 10:23:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565803390; cv=none; d=google.com; s=arc-20160816; b=P3iV6wrHWeQc1n+fE6YoUU77LBZJ0vJYldpyP6jma092zBC5Uwh53Rgo+BBI+Psn0/ apY9b1oGVQEkB6gc22FQ5S5lMB9A8pksNjDzcFnUHgrO6e5fA17I11ZpZ/b/C8qSrlEK Sz1Cu9iKzkTEsasj6ZQba2DjVTz9PkQffp741Ub1bVwiHN0ObssSl2769zA3W7bX39d5 B8wlOEE1lDTS5ssueuyUq+tQmjUxYkC72ioJGan3BsarHK8WZFH9R4aAqHUScdXTxL5d lwzfb1xw7YJ7nw+k08Of9eMDECcXhxlYedBVC/EDhIM8H8BP/rHA3fzc2l98s+F3Est+ kmIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=IxWxL3O8k/8xgog+GkCBGWfWrHAut5koXXE3uxCaUqI=; b=CQ/RipeauoJH5PY6E/bZfnhCLCWbr79OZYkjuDwqoPXFZtsmfc1E5H7Cd0ZrEp7mNN o63d86OkEyiYleNtyl7tpPqI429vRM+rCnS/GIWXvPTHXxI8IGMk4YqJbMPWn3OzGjyl d0u/7yfMuLa/a3CWPOgEHImWKsxx3v4XAjMvdKBZ8gbclHz5Z2+GHmV48/3Zm6YY7TMf C9oP0HIs2UODse2fZPEhFR9irTSqxeesFRgLdtTgJgqMLNxO7dMTZ0VrcieS66OZJMtV Nb2BPI9tSUP46FNZusVoknt6uYOLiq8Q9Xvji2Y1sM6L9qfwN8mUWYZoXh/9Oe1EGmU1 2SZQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rG4mJnxl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z35si193547pga.42.2019.08.14.10.22.54; Wed, 14 Aug 2019 10:23:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=rG4mJnxl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730157AbfHNRWZ (ORCPT + 99 others); Wed, 14 Aug 2019 13:22:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:58772 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728881AbfHNRIj (ORCPT ); Wed, 14 Aug 2019 13:08:39 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id EB52A2084D; Wed, 14 Aug 2019 17:08:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565802518; bh=2MvbF2KA/k5gdGgKZKc+M0Ji1frJAESrzQYUIAwuwh8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rG4mJnxlb1JnfyAJ8oKbwIw/zyg00kTTXq4tBjyioZA2sS8beGq+sZzBpGhCoh+dg zkOIez1b21gSgfborY0ePXXqClJBGnekubfK0BKdpNBaBvClosZ07PbKSNmEp22G17 Surcz1Wus+N6X20XieRU1n2KaIvKsXP6SkK/L438= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mikulas Patocka , Jens Axboe Subject: [PATCH 4.19 13/91] loop: set PF_MEMALLOC_NOIO for the worker thread Date: Wed, 14 Aug 2019 19:00:36 +0200 Message-Id: <20190814165750.330102492@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190814165748.991235624@linuxfoundation.org> References: <20190814165748.991235624@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mikulas Patocka commit d0a255e795ab976481565f6ac178314b34fbf891 upstream. A deadlock with this stacktrace was observed. The loop thread does a GFP_KERNEL allocation, it calls into dm-bufio shrinker and the shrinker depends on I/O completion in the dm-bufio subsystem. In order to fix the deadlock (and other similar ones), we set the flag PF_MEMALLOC_NOIO at loop thread entry. PID: 474 TASK: ffff8813e11f4600 CPU: 10 COMMAND: "kswapd0" #0 [ffff8813dedfb938] __schedule at ffffffff8173f405 #1 [ffff8813dedfb990] schedule at ffffffff8173fa27 #2 [ffff8813dedfb9b0] schedule_timeout at ffffffff81742fec #3 [ffff8813dedfba60] io_schedule_timeout at ffffffff8173f186 #4 [ffff8813dedfbaa0] bit_wait_io at ffffffff8174034f #5 [ffff8813dedfbac0] __wait_on_bit at ffffffff8173fec8 #6 [ffff8813dedfbb10] out_of_line_wait_on_bit at ffffffff8173ff81 #7 [ffff8813dedfbb90] __make_buffer_clean at ffffffffa038736f [dm_bufio] #8 [ffff8813dedfbbb0] __try_evict_buffer at ffffffffa0387bb8 [dm_bufio] #9 [ffff8813dedfbbd0] dm_bufio_shrink_scan at ffffffffa0387cc3 [dm_bufio] #10 [ffff8813dedfbc40] shrink_slab at ffffffff811a87ce #11 [ffff8813dedfbd30] shrink_zone at ffffffff811ad778 #12 [ffff8813dedfbdc0] kswapd at ffffffff811ae92f #13 [ffff8813dedfbec0] kthread at ffffffff810a8428 #14 [ffff8813dedfbf50] ret_from_fork at ffffffff81745242 PID: 14127 TASK: ffff881455749c00 CPU: 11 COMMAND: "loop1" #0 [ffff88272f5af228] __schedule at ffffffff8173f405 #1 [ffff88272f5af280] schedule at ffffffff8173fa27 #2 [ffff88272f5af2a0] schedule_preempt_disabled at ffffffff8173fd5e #3 [ffff88272f5af2b0] __mutex_lock_slowpath at ffffffff81741fb5 #4 [ffff88272f5af330] mutex_lock at ffffffff81742133 #5 [ffff88272f5af350] dm_bufio_shrink_count at ffffffffa03865f9 [dm_bufio] #6 [ffff88272f5af380] shrink_slab at ffffffff811a86bd #7 [ffff88272f5af470] shrink_zone at ffffffff811ad778 #8 [ffff88272f5af500] do_try_to_free_pages at ffffffff811adb34 #9 [ffff88272f5af590] try_to_free_pages at ffffffff811adef8 #10 [ffff88272f5af610] __alloc_pages_nodemask at ffffffff811a09c3 #11 [ffff88272f5af710] alloc_pages_current at ffffffff811e8b71 #12 [ffff88272f5af760] new_slab at ffffffff811f4523 #13 [ffff88272f5af7b0] __slab_alloc at ffffffff8173a1b5 #14 [ffff88272f5af880] kmem_cache_alloc at ffffffff811f484b #15 [ffff88272f5af8d0] do_blockdev_direct_IO at ffffffff812535b3 #16 [ffff88272f5afb00] __blockdev_direct_IO at ffffffff81255dc3 #17 [ffff88272f5afb30] xfs_vm_direct_IO at ffffffffa01fe3fc [xfs] #18 [ffff88272f5afb90] generic_file_read_iter at ffffffff81198994 #19 [ffff88272f5afc50] __dta_xfs_file_read_iter_2398 at ffffffffa020c970 [xfs] #20 [ffff88272f5afcc0] lo_rw_aio at ffffffffa0377042 [loop] #21 [ffff88272f5afd70] loop_queue_work at ffffffffa0377c3b [loop] #22 [ffff88272f5afe60] kthread_worker_fn at ffffffff810a8a0c #23 [ffff88272f5afec0] kthread at ffffffff810a8428 #24 [ffff88272f5aff50] ret_from_fork at ffffffff81745242 Signed-off-by: Mikulas Patocka Cc: stable@vger.kernel.org Signed-off-by: Jens Axboe Signed-off-by: Greg Kroah-Hartman --- drivers/block/loop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -886,7 +886,7 @@ static void loop_unprepare_queue(struct static int loop_kthread_worker_fn(void *worker_ptr) { - current->flags |= PF_LESS_THROTTLE; + current->flags |= PF_LESS_THROTTLE | PF_MEMALLOC_NOIO; return kthread_worker_fn(worker_ptr); }