Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp977055pxb; Wed, 6 Apr 2022 05:51:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzul5ItzTHU0qKodGU77qUyT0VORNMuWTER2dhsL1mERhRLy3+sykCbGZdjAFxBf5Hlb1Zi X-Received: by 2002:a17:90b:4a82:b0:1c7:5837:ab5c with SMTP id lp2-20020a17090b4a8200b001c75837ab5cmr9709485pjb.55.1649249491686; Wed, 06 Apr 2022 05:51:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649249491; cv=none; d=google.com; s=arc-20160816; b=oFfNHeNgLPIQH0VAA0WLixkqW3zzni8hZ8176uoDa+B/Bs28UI5emszaArbuCmwNDp u8eMPAfe+2G0s62SvR427Lhr1PJa3b1dL0oGga0BxHaH80lzzRl3qYAqVd2M6lSlzLmJ RjG7U5oNcUOmT759KwzYUxIZuIUhEzs1CdWkIbV5iBYOhq0ZaUJ/lVeS3MZx/mZgzEt+ aX/TG6DcP2T+U0Oy8QYCmbrCtOOX+m8l2jwsutbNRJmU9MuzDvDySwtld7IrgGxcl8ku VUIlycHXFiEvBSjhHRrwKB9TJHY4OUcn4TTREoElTRsF3OYZMiQxS+JG6Bkse/FqDXkh 2Ydg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Y3hsKjZG3mkg81lf3WNh5HgXGcWkX44G75ftj64hCq8=; b=eQysiFHEP2Cs46hjfJh2HKWmUOC4CjvbLri8pl80W5VEdv/C2DTaMaWUeq7kkChPDK lrQSlnekq0Zg4ZP2VKQumnclFD0kVNktTVUR9Avi+vnTfn3FVmF4S3U5yMY7pCAGfvtZ hDNaqhyCS0Y+VFd7YcnvQaWsAnSvIRSsFXEhM9Hh/olVzS8FEkkW02sFrinQY+AT87Dx lDkgADbkMmyRPKKiKZtvojkWxB1EvcCYKDJ9CLVvysgCeF4ymrxJBi53HclyfWtevpGs MpzdjEt7kzKM2Rya3/VCPd7kolIVztNp1gDRytzxfRyUXcZKp4K7OzZVozCtF2IEOMG6 jh3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=f6XievaA; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id k18-20020a170902c41200b00153b2d165f6si15953430plk.510.2022.04.06.05.51.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 05:51:31 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=f6XievaA; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 636C14302E2; Wed, 6 Apr 2022 02:49:11 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1381690AbiDEUlR (ORCPT + 99 others); Tue, 5 Apr 2022 16:41:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356050AbiDEKWu (ORCPT ); Tue, 5 Apr 2022 06:22:50 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 827C2AC044; Tue, 5 Apr 2022 03:05:41 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E35C56167E; Tue, 5 Apr 2022 10:05:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 018ECC385A2; Tue, 5 Apr 2022 10:05:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649153140; bh=9ZFDDhY/swhbtnUTI1swTrMLKGNPHHThkWr5qPxbwOQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=f6XievaABNZMfONiAbv7emK3iXl6bwBXnTP+KT0LLjU+bLLL59PGD6dNFcDrW21y/ Xk2uRXGQux8cn3+BBOWH6KRuW540EmnMMBuTeZ16W3vtDqo8Sy6qkD230WT9q1tbea vWxDQQU0Lk04o/o2pUT2ufhJ7AUsbUk0VO3Utwvw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mikulas Patocka , Milan Broz , Mike Snitzer Subject: [PATCH 5.10 079/599] dm integrity: set journal entry unused when shrinking device Date: Tue, 5 Apr 2022 09:26:13 +0200 Message-Id: <20220405070301.176421140@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070258.802373272@linuxfoundation.org> References: <20220405070258.802373272@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mikulas Patocka commit cc09e8a9dec4f0e8299e80a7a2a8e6f54164a10b upstream. Commit f6f72f32c22c ("dm integrity: don't replay journal data past the end of the device") skips journal replay if the target sector points beyond the end of the device. Unfortunatelly, it doesn't set the journal entry unused, which resulted in this BUG being triggered: BUG_ON(!journal_entry_is_unused(je)) Fix this by calling journal_entry_set_unused() for this case. Fixes: f6f72f32c22c ("dm integrity: don't replay journal data past the end of the device") Cc: stable@vger.kernel.org # v5.7+ Signed-off-by: Mikulas Patocka Tested-by: Milan Broz [snitzer: revised header] Signed-off-by: Mike Snitzer Signed-off-by: Greg Kroah-Hartman --- drivers/md/dm-integrity.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- a/drivers/md/dm-integrity.c +++ b/drivers/md/dm-integrity.c @@ -2354,9 +2354,11 @@ static void do_journal_write(struct dm_i dm_integrity_io_error(ic, "invalid sector in journal", -EIO); sec &= ~(sector_t)(ic->sectors_per_block - 1); } + if (unlikely(sec >= ic->provided_data_sectors)) { + journal_entry_set_unused(je); + continue; + } } - if (unlikely(sec >= ic->provided_data_sectors)) - continue; get_area_and_offset(ic, sec, &area, &offset); restore_last_bytes(ic, access_journal_data(ic, i, j), je); for (k = j + 1; k < ic->journal_section_entries; k++) {