Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp2697426ybg; Mon, 28 Oct 2019 00:26:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqz6qvHUJiOYgnLwSGbqJyu16yqIr8hWD3BCviThA9gdJaTI9UfI+GReBeed+zUUwC/1Jpl7 X-Received: by 2002:a17:906:9391:: with SMTP id l17mr15218559ejx.315.1572247604195; Mon, 28 Oct 2019 00:26:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572247604; cv=none; d=google.com; s=arc-20160816; b=qo6KsdxmOLvUUbxU5wcnT5AYsJdVTKUivBv/bQm/zRG705nUp/cMjjlcw6p+U7xrqu 30dMFHU/HfrU4E1xiKCoc2bfn5LN6DBosTd37Fy+3lVU7gSx1H03yYU8qy6Q+1guH0Yb Pls0cFL6bDdIrF4cUw3GKHTHOUoMw3qg4BjgKK637AWhb9ynpgXBdIZI2JKrGYK4ZQUQ oxT+zEwutWIqp+Uqz5S2VLMhZlqbP5NSRQroQTZpLVJT2uOCVYKGTfLA9EhhYrTKl+XX G4cWNw3QvOBU1SVcW5FKbOhw3eJZWRNphpUdwxowHdMpjMPw13dj2yy/yRAq6rjtTOAb 9sUw== 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=i10IdqdugufPcuyBb8NS62ucLduLHHUHmjdx0ueyUKk=; b=h9yqDXjB8Wo+dBOMU3Q1p4sVU2kL2RmxQodx0CIygBJmIPToQr1yxHt0B1iIpwgC3w GAmctlGw+GRSBOoYlJBL2nYiMoFvxxtxl8/Ayd7HfrNXKG8twnFo6HxUUrVGYkQ00rg8 gHEtaZuWX+DMjUOKl5PMhzCZARjeWpuY49jkZrP9RJqyCeFEoIQsqiz0wKtlCQDKbue0 2hlmzzA7fZ6gOchfudrcDQSP9vq46qsoiTQMh3p3fdwc8jxW5XPURD34d81ogBpp88y4 Iq1bCF1EBFbDZI/gFrPygDRQtzh7O+SEBCAGfMi9heIHJ0340oT/Q39BaDoDe4mw+o7L UpBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="Q6/dG9ds"; 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 18si1905794ejz.321.2019.10.28.00.26.20; Mon, 28 Oct 2019 00:26:44 -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="Q6/dG9ds"; 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 S1731610AbfJ0VUD (ORCPT + 99 others); Sun, 27 Oct 2019 17:20:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:40414 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731589AbfJ0VUB (ORCPT ); Sun, 27 Oct 2019 17:20:01 -0400 Received: from localhost (100.50.158.77.rev.sfr.net [77.158.50.100]) (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 2EA62205C9; Sun, 27 Oct 2019 21:20:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572211200; bh=yELjqYsgYWWkUaUp6mTbKnm+UbdtTXKVaFyRJcZEp9I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q6/dG9dsgcdB/O6Q4NVaakbnIWUq5LxdnewbjJhn7TFR9PX/pXw1SvlLNwXVE1Yof Mc/V1DHNgNzF9RYqdtscR0UFga2qwOiYfWwKGhYUVR6+XBwuyGoZaf1h1a4OA1Pe8r 83v2os6lOPa0tH9w777kD+jN3oi5qsCa12sIn/c0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Yi Li , Joseph Qi , Mark Fasheh , Joel Becker , Junxiao Bi , Changwei Ge , Gang He , Jun Piao , Andrew Morton , Linus Torvalds Subject: [PATCH 5.3 067/197] ocfs2: fix panic due to ocfs2_wq is null Date: Sun, 27 Oct 2019 21:59:45 +0100 Message-Id: <20191027203355.275799659@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191027203351.684916567@linuxfoundation.org> References: <20191027203351.684916567@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: Yi Li commit b918c43021baaa3648de09e19a4a3dd555a45f40 upstream. mount.ocfs2 failed when reading ocfs2 filesystem superblock encounters an error. ocfs2_initialize_super() returns before allocating ocfs2_wq. ocfs2_dismount_volume() triggers the following panic. Oct 15 16:09:27 cnwarekv-205120 kernel: On-disk corruption discovered.Please run fsck.ocfs2 once the filesystem is unmounted. Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_read_locked_inode:537 ERROR: status = -30 Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_init_global_system_inodes:458 ERROR: status = -30 Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_init_global_system_inodes:491 ERROR: status = -30 Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_initialize_super:2313 ERROR: status = -30 Oct 15 16:09:27 cnwarekv-205120 kernel: (mount.ocfs2,22804,44): ocfs2_fill_super:1033 ERROR: status = -30 ------------[ cut here ]------------ Oops: 0002 [#1] SMP NOPTI CPU: 1 PID: 11753 Comm: mount.ocfs2 Tainted: G E 4.14.148-200.ckv.x86_64 #1 Hardware name: Sugon H320-G30/35N16-US, BIOS 0SSDX017 12/21/2018 task: ffff967af0520000 task.stack: ffffa5f05484000 RIP: 0010:mutex_lock+0x19/0x20 Call Trace: flush_workqueue+0x81/0x460 ocfs2_shutdown_local_alloc+0x47/0x440 [ocfs2] ocfs2_dismount_volume+0x84/0x400 [ocfs2] ocfs2_fill_super+0xa4/0x1270 [ocfs2] ? ocfs2_initialize_super.isa.211+0xf20/0xf20 [ocfs2] mount_bdev+0x17f/0x1c0 mount_fs+0x3a/0x160 Link: http://lkml.kernel.org/r/1571139611-24107-1-git-send-email-yili@winhong.com Signed-off-by: Yi Li Reviewed-by: Joseph Qi Cc: Mark Fasheh Cc: Joel Becker Cc: Junxiao Bi Cc: Changwei Ge Cc: Gang He Cc: Jun Piao Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- fs/ocfs2/journal.c | 3 ++- fs/ocfs2/localalloc.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -217,7 +217,8 @@ void ocfs2_recovery_exit(struct ocfs2_su /* At this point, we know that no more recovery threads can be * launched, so wait for any recovery completion work to * complete. */ - flush_workqueue(osb->ocfs2_wq); + if (osb->ocfs2_wq) + flush_workqueue(osb->ocfs2_wq); /* * Now that recovery is shut down, and the osb is about to be --- a/fs/ocfs2/localalloc.c +++ b/fs/ocfs2/localalloc.c @@ -377,7 +377,8 @@ void ocfs2_shutdown_local_alloc(struct o struct ocfs2_dinode *alloc = NULL; cancel_delayed_work(&osb->la_enable_wq); - flush_workqueue(osb->ocfs2_wq); + if (osb->ocfs2_wq) + flush_workqueue(osb->ocfs2_wq); if (osb->local_alloc_state == OCFS2_LA_UNUSED) goto out;