Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4643288pxj; Wed, 12 May 2021 09:55:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx3wZbBPywzownaM29N5nuJBWoJxZyuvMImQ4G/ctZerIwnnu9U275giTvK3lCXj/ikZR9p X-Received: by 2002:a50:eb82:: with SMTP id y2mr44784102edr.190.1620838517577; Wed, 12 May 2021 09:55:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620838517; cv=none; d=google.com; s=arc-20160816; b=BOKNfkIxFb5jymEWdH2XqjAj0Bl+ceuSUyqOyRA0hrBSaDH7NOgqFq1kymUhJ8ss5d 3jSSVw1m3ObHGKzJcH8BkoSdubwJUt5qzywgnkjndH1XqRS9PR2KtpKLXkPuZXhY+uqt YjK/jKs2NXQyJZiWjgS/i7aeGbmHWNRN+v0HudEiK02QrmAA5HYGSZziN9z57w+OL6Yl O3jQEjhpwes5COX8AQgmZ4EkNqA+8ZoQhxAHh6JcRY8HPbNhQOrXtUROXpQalDY266XV QSHoOYBV9SYVwHNg5+BVndrfVNYZaWxEZgsqNNCfElba/z8SKzC0NFgzM1r6TPSJ9gdD v5EQ== 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=G/qHNHiCWhqDfMBBBbypZ+JLxQw9loKchMTxPGpxazs=; b=S1K66U2z7KJaHefcgSN43jyMb23qRoBdgTp4Dybcj317CrvJSkICOvKkGD7/c5uF2p hXGJ/bkd6O7b+I6vTsQz1tk8B6aq+CATvN0m1KAJGEXKql2+I6iNPPN+o+PNmoFiH+V4 kqyh61my4hCugbR2yr6WZdxRT49BR8OdzE2vqtwIdAH2x7TPQg8sFyFqEoQiZC4es8jQ K3zH5ia5CmdGjbnXFtIjmQKVo/wMFOyC25nxNYbsFgnNB64SS80dVnWjkIV3moImhs6t O5WcDstVTm/4lJ1fGcWwaOzj/m64Ae7J3OGBhm4esdj7kfjJdYAgGYy87Y23/5i1AIPY qv+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=j7c4ILuR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d15si227416edu.375.2021.05.12.09.54.49; Wed, 12 May 2021 09:55:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=j7c4ILuR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245742AbhELQxI (ORCPT + 99 others); Wed, 12 May 2021 12:53:08 -0400 Received: from mail.kernel.org ([198.145.29.99]:51326 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233492AbhELPvJ (ORCPT ); Wed, 12 May 2021 11:51:09 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id D8A01619D0; Wed, 12 May 2021 15:26:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620833174; bh=HH/D9Pn2RaJvhrcPfIpMqvLhEA2rGhnWd1gQMZdlTDE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=j7c4ILuRNSuyxN/YKDkYSGJsD6fEOdoyqJ86jjf7E5ATxDyy7F2bIuWnGJopgFyMp L9jQcItQK2vOlu4nr+0yl7La3TEI0KJaxCjQpx2TJP+GC9SFHv5K/Gk2HKzk3Ahkdp nUigLOfn9/RDwnrFI2Yh4mFGH0zyivaE9Jld1PYQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xiao Ni , Song Liu Subject: [PATCH 5.11 047/601] async_xor: increase src_offs when dropping destination page Date: Wed, 12 May 2021 16:42:04 +0200 Message-Id: <20210512144829.370797171@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144827.811958675@linuxfoundation.org> References: <20210512144827.811958675@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xiao Ni commit ceaf2966ab082bbc4d26516f97b3ca8a676e2af8 upstream. Now we support sharing one page if PAGE_SIZE is not equal stripe size. To support this, it needs to support calculating xor value with different offsets for each r5dev. One offset array is used to record those offsets. In RMW mode, parity page is used as a source page. It sets ASYNC_TX_XOR_DROP_DST before calculating xor value in ops_run_prexor5. So it needs to add src_list and src_offs at the same time. Now it only needs src_list. So the xor value which is calculated is wrong. It can cause data corruption problem. I can reproduce this problem 100% on a POWER8 machine. The steps are: mdadm -CR /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --size=3G mkfs.xfs /dev/md0 mount /dev/md0 /mnt/test mount: /mnt/test: mount(2) system call failed: Structure needs cleaning. Fixes: 29bcff787a25 ("md/raid5: add new xor function to support different page offset") Cc: stable@vger.kernel.org # v5.10+ Signed-off-by: Xiao Ni Signed-off-by: Song Liu Signed-off-by: Greg Kroah-Hartman --- crypto/async_tx/async_xor.c | 1 + 1 file changed, 1 insertion(+) --- a/crypto/async_tx/async_xor.c +++ b/crypto/async_tx/async_xor.c @@ -233,6 +233,7 @@ async_xor_offs(struct page *dest, unsign if (submit->flags & ASYNC_TX_XOR_DROP_DST) { src_cnt--; src_list++; + src_offs++; } /* wait for any prerequisite operations */