Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp715938imm; Thu, 13 Sep 2018 06:44:36 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYnGJ25qAEe9xB5PoixS6kpyoF2Ypj/C0HVSKdVCrU6OyroGKQozDX69B6ZZvCvRECz3ev8 X-Received: by 2002:a17:902:59ce:: with SMTP id d14-v6mr7428228plj.42.1536846276451; Thu, 13 Sep 2018 06:44:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536846276; cv=none; d=google.com; s=arc-20160816; b=N5AKMbSVdAXnmqbaarUi7cmnvm6fE7TlwnXzb9tr44iYcGONI98wxJdRvKP5W+5DNi 3WLQejATPcSgCxinLZoLlFdlDA0g7ixi9MTSCWAckociW+HgtXJrQ/iiu2momyk5rC8O 1nyUDZJHFa8CwW085JJi/jaepBu95ltNiToyYkVlbhgnbpFLZNgQeFlc6SMWV0iRnrtI 2UL5d/FWRkjM2Q4bhssn5QtqiO+/0Kvj84XTj/2GKo3q9CLSi8Cwaj5QQ8gydTK75eUm wiLlxRu88d6adUd8DwLGE/TMK0px0ZXZcPuo6kL4C7twPotNcBQe7wwfoX8C2zIPh568 vsWg== 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; bh=Uo7TPk+zuW0wM7sXyi82VVVEwWvIAK5WXbLgGJBQEvQ=; b=U0kSQy+8ho6g6IPwm+fVBbZAia2Sn8m4lH5lHenJBCL5hiBTLomrANqFgLK5vNauce Q6i3HT4WPEkWNZSHWDuQUaULdMgXKo1Bxtc2utaq0xu5+pbUHGAqzo5cSDSgC+qktays JzgNdPq1lcMFjQ7Et4v5yZyIjzjSahRUP3Ad2x/0ZSCx08056xaLqDH0VdpoxUEoSYAg 88+XE0RJxgldghdpfZCqyeVDKMHfG4XhdY4VppXEHZ9dFTyuBp4ESTFy9IRMBQFrIGrU NOS70R5slmFG1tK96BfD/dCryDQhwhCsbNmi8bm6MdZBRR69LJP6MgQMw16Yiu3lPljy IRzA== ARC-Authentication-Results: i=1; mx.google.com; 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 y6-v6si4109424plp.279.2018.09.13.06.44.21; Thu, 13 Sep 2018 06:44:36 -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; 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 S1729794AbeIMSwR (ORCPT + 99 others); Thu, 13 Sep 2018 14:52:17 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:60236 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727658AbeIMSwR (ORCPT ); Thu, 13 Sep 2018 14:52:17 -0400 Received: from localhost (ip-213-127-77-73.ip.prioritytelecom.net [213.127.77.73]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 70001D10; Thu, 13 Sep 2018 13:42:44 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, "=?UTF-8?q?Ernesto=20A . =20Fern=C3=A1ndez?=" , Wen Xu , Viacheslav Dubeyko , Andrew Morton , Linus Torvalds , Sasha Levin Subject: [PATCH 4.14 027/115] hfsplus: fix NULL dereference in hfsplus_lookup() Date: Thu, 13 Sep 2018 15:30:47 +0200 Message-Id: <20180913131825.309067703@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180913131823.327472833@linuxfoundation.org> References: <20180913131823.327472833@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: "Ernesto A. Fern?ndez" [ Upstream commit a7ec7a4193a2eb3b5341243fc0b621c1ac9e4ec4 ] An HFS+ filesystem can be mounted read-only without having a metadata directory, which is needed to support hardlinks. But if the catalog data is corrupted, a directory lookup may still find dentries claiming to be hardlinks. hfsplus_lookup() does check that ->hidden_dir is not NULL in such a situation, but mistakenly does so after dereferencing it for the first time. Reorder this check to prevent a crash. This happens when looking up corrupted catalog data (dentry) on a filesystem with no metadata directory (this could only ever happen on a read-only mount). Wen Xu sent the replication steps in detail to the fsdevel list: https://bugzilla.kernel.org/show_bug.cgi?id=200297 Link: http://lkml.kernel.org/r/20180712215344.q44dyrhymm4ajkao@eaf Signed-off-by: Ernesto A. Fernández Reported-by: Wen Xu Cc: Viacheslav Dubeyko Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- fs/hfsplus/dir.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/fs/hfsplus/dir.c +++ b/fs/hfsplus/dir.c @@ -78,13 +78,13 @@ again: cpu_to_be32(HFSP_HARDLINK_TYPE) && entry.file.user_info.fdCreator == cpu_to_be32(HFSP_HFSPLUS_CREATOR) && + HFSPLUS_SB(sb)->hidden_dir && (entry.file.create_date == HFSPLUS_I(HFSPLUS_SB(sb)->hidden_dir)-> create_date || entry.file.create_date == HFSPLUS_I(d_inode(sb->s_root))-> - create_date) && - HFSPLUS_SB(sb)->hidden_dir) { + create_date)) { struct qstr str; char name[32];