From patchwork Wed Feb 14 10:28:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jan Kara X-Patchwork-Id: 10218361 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D4745601C2 for ; Wed, 14 Feb 2018 10:29:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CE25328C3A for ; Wed, 14 Feb 2018 10:29:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C307728F55; Wed, 14 Feb 2018 10:29:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7B36F28C3A for ; Wed, 14 Feb 2018 10:29:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967175AbeBNK3H (ORCPT ); Wed, 14 Feb 2018 05:29:07 -0500 Received: from mx2.suse.de ([195.135.220.15]:60031 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967065AbeBNK26 (ORCPT ); Wed, 14 Feb 2018 05:28:58 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 1E2ADAE9E; Wed, 14 Feb 2018 10:28:57 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id B27A71E04F3; Wed, 14 Feb 2018 11:28:56 +0100 (CET) From: Jan Kara To: Cc: =?UTF-8?q?Pali=20Roh=C3=A1r?= , Jan Kara Subject: [PATCH 3/6] udf: Allow volume descriptor sequence to be terminated by unrecorded block Date: Wed, 14 Feb 2018 11:28:47 +0100 Message-Id: <20180214102850.28755-4-jack@suse.cz> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180214102850.28755-1-jack@suse.cz> References: <20180214102850.28755-1-jack@suse.cz> MIME-Version: 1.0 Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP According to ECMA-167 3/8.4.2 a volume descriptor sequence can be terminated also by an unrecorded block within the extent of volume descriptor sequence. Currently we errored out in such case making such volumes unmountable. Handle that case by treating any invalid block as a block terminating the sequence. Reported-by: Pali Rohár Signed-off-by: Jan Kara --- fs/udf/super.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/fs/udf/super.c b/fs/udf/super.c index f80b97173acd..456d737fc7ca 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -1627,12 +1627,8 @@ static noinline int udf_process_sequence( for (; (!done && block <= lastblock); block++) { bh = udf_read_tagged(sb, block, block, &ident); - if (!bh) { - udf_err(sb, - "Block %llu of volume descriptor sequence is corrupted or we could not read it\n", - (unsigned long long)block); - return -EAGAIN; - } + if (!bh) + break; /* Process each descriptor (ISO 13346 3/8.3-8.4) */ gd = (struct generic_desc *)bh->b_data;