Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1078061ybl; Wed, 14 Aug 2019 10:20:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqz6rj2vbw+VXg3QnovWeZWPvVxv5USdVQWiCNtRIDlPj9TbT3/H+UswC3Twn4YekF8QTWVt X-Received: by 2002:a17:90a:d3d6:: with SMTP id d22mr779179pjw.5.1565803209329; Wed, 14 Aug 2019 10:20:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565803209; cv=none; d=google.com; s=arc-20160816; b=m5zBGGO9wrFkeoOw6YFuqOm+8Go5HI8I+6U+Ex7FZVJXK2/Q+10qX7icB0nqnFrEka /ll3rJw7XrprXD4bxOqeUqdrvljfElBkeD/FPkPc05WbmV45sdDzYiwJ7mKcoZ5ywON0 skxXOv2bFgNmvYYFzcU3OAt9+WyaCw9wDPAv+fifp8Lab6rNnfsdgSqVEz9RH0F68KFf 9YW8qCrMGafd/SACZeuNoc+w4u2Iwxvq4fgwUExJahzfDmk5rx76C6Vza3PIMBjgSai5 nTVOhgKul9WkTfaBsLSFOwlbTarJTG5y7ClwfmPf35j6M+Ri7jqW2aF+MlUo9eMeZfmK efYQ== 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=wX/rIyBhTIz0GCDV56qoVBmBp0+I/GlLsFXhCsXkwOs=; b=wKdXMq5x1bkwr15JwGyyKqvZ1+36cBKkRCXBBAXxICjDWomz8xhhJiBWqPnpTshHP/ 12goDoZmCB/MKr7DvdwtISYke33oarHakJsiQNRSZxxwI3LR2NJP99icx9mX1lOmU04t FqBBGu1EdyXBPjUee0V+UkrrXdxl+XpGgRksZz6aa9jLEcbvQWR98rIFCR1HZZVoEmHI ZEzNTlwdSqkDI+19shHo5356irdoQ1tew9B6zymIPLx6/VfFqLTduCu44vRHTX6u5Seo Uxgy8GKttH3c5f9DqcgJNP/excJIlUYRDEb8ye33QNCdh45hxECpzclg/kjQTQHR1j2I Dv/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="ByPY/uMz"; 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 cj2si221637plb.190.2019.08.14.10.19.53; Wed, 14 Aug 2019 10:20:09 -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="ByPY/uMz"; 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 S1731026AbfHNRSL (ORCPT + 99 others); Wed, 14 Aug 2019 13:18:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:36866 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730409AbfHNRMu (ORCPT ); Wed, 14 Aug 2019 13:12:50 -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 F3490214DA; Wed, 14 Aug 2019 17:12:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565802769; bh=8vACyV4HWZSpDIGeYsjVQviONxqVr7jlAcvVeMNcYis=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ByPY/uMzzQ0o7JwXe77I4CFocudkWoNpo9o1uUlUrKAU63DN7zlPgktRFmbqIzyS5 DwGut8i6YYgPLgAb+qWaP5LHbhgATIQVqt0RPgP9C/PyMeH0DYphPNN0ZVblMH6SZw mhxBkkYKLgmuoUX5iFeJD1EpWrNM/3kPio1wkPX0= 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.14 09/69] loop: set PF_MEMALLOC_NOIO for the worker thread Date: Wed, 14 Aug 2019 19:01:07 +0200 Message-Id: <20190814165746.162799150@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190814165744.822314328@linuxfoundation.org> References: <20190814165744.822314328@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 @@ -857,7 +857,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); }