Received: by 2002:a05:6358:7058:b0:131:369:b2a3 with SMTP id 24csp5054389rwp; Sun, 16 Jul 2023 18:14:53 -0700 (PDT) X-Google-Smtp-Source: APBJJlGaKk+dqanZ5TRVhD1PhA7GB78TNTImBP2IvHeAZjcJUfm3EdUlZOx4k6K7PB4EM9IMEBVD X-Received: by 2002:a05:6358:7e83:b0:134:ccde:596b with SMTP id o3-20020a0563587e8300b00134ccde596bmr8638129rwn.12.1689556493457; Sun, 16 Jul 2023 18:14:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689556493; cv=none; d=google.com; s=arc-20160816; b=yDcI3T/qwBrhCullfJQk1TwEgi0umuDWOaXQ5pM+ploptdUzvlnyFk9fxTlqCC2JK6 8sv0fTW6tuxrG7+tnOQiFSsBmPgFvQcjn4KVxabPI+/r20uozUwitl6aSGk/UnmsPlmE y1+0e73Jag22GQV+PVIDLx+ygEa9lemWmKj7urq+PnigQ8nwhL37mg0HFhWl77cIIVj6 G9m1q1rusbB+dMt0UoQhbu1JbN4xtOuS0WW/mFED0DE1SdmMtmohMH3eraU4cdwdYGTV fQGhJSZ+5ksMzmw5TnieI6tzCLC5Wh3DUFzTY0MhU/FYaQKhp1yLwTHmTW07YxMKSJM2 1qgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :mime-version:user-agent:date:message-id:from:references:cc:to :subject; bh=ITKV6wV4FaW6jGZjAdtoUTnCgJv5Z+O7P1ql7couD3g=; fh=LUnWXT16gqWkI2n5/ak2xjcaORY+RNkuLFD2z0wNFrs=; b=O0xwDC0cczCj1QQq9AdlrkhukQPXsYXg8aICwjfwwZTm4eAsBetXEp+po4UDK8WceO RNlKJjnTPUqGYucDuyhGEOMTh5uzyF60V1cHzVh26Ut40yD7yLyu7GVtrLh+VfvugHgD 5aphKecBf903JXiGc/rbPoDIfZs5BugpxiFh0tScCsg5MV4DFmsLO+p4og/DwWJ61k+f 4d/qFw1J/tVX7kZ8cHdeg04tvlvEKSSEblNSNtEb77dr1f+HzktmuxhRy32mJfF1HMgq 59px8eycXMEtd482af5vIMgxdLUf2FEricSmA7ZJ/MFQ1fg02TehIwrkpcT5ceF4SamL 74zA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id eh10-20020a056a00808a00b00678e14c629bsi10568161pfb.401.2023.07.16.18.14.41; Sun, 16 Jul 2023 18:14:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230264AbjGQBKx (ORCPT + 99 others); Sun, 16 Jul 2023 21:10:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230251AbjGQBKv (ORCPT ); Sun, 16 Jul 2023 21:10:51 -0400 Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9CD21AD; Sun, 16 Jul 2023 18:10:50 -0700 (PDT) Received: from mail02.huawei.com (unknown [172.30.67.143]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4R43tG4TBfz4f3kKw; Mon, 17 Jul 2023 09:10:46 +0800 (CST) Received: from [10.174.176.73] (unknown [10.174.176.73]) by APP4 (Coremail) with SMTP id gCh0CgBn0LMVlbRknj+UOA--.49234S3; Mon, 17 Jul 2023 09:10:47 +0800 (CST) Subject: Re: [PATCH] md: raid1: fix potential OOB in raid1_remove_disk() To: Zhang Shurong , song@kernel.org Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, "yukuai (C)" References: From: Yu Kuai Message-ID: <84626f1f-d8ae-4d60-81f1-9e4656f8dcf6@huaweicloud.com> Date: Mon, 17 Jul 2023 09:10:45 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID: gCh0CgBn0LMVlbRknj+UOA--.49234S3 X-Coremail-Antispam: 1UD129KBjvdXoWrKFykKryUJrW8Cw1rCF1kAFb_yoWkAFgEga 4UZa4fXr4Iqryvyw47Ww1fZr9Fy3s5Wws5ZayFgF98Was8uw4Fgry8u348WasIkry2vr47 Ar1UWw10yrn3ujkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUbzkYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20E Y4v20xvaj40_Wr0E3s1l1IIY67AEw4v_Jr0_Jr4l8cAvFVAK0II2c7xJM28CjxkF64kEwV A0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVW7JVWDJwA2z4x0Y4vE2Ix0cI8IcVCY1x02 67AKxVWxJVW8Jr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxV AFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2 j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7x kEbVWUJVW8JwACjcxG0xvEwIxGrwCYjI0SjxkI62AI1cAE67vIY487MxAIw28IcxkI7VAK I48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7 xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0EwIxGrwCI42IY6xII jxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42IY6xAIw2 0EY4v20xvaj40_WFyUJVCq3wCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF 7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07UE-erUUUUU= X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/ X-CFilter-Loop: Reflected X-Spam-Status: No, score=-1.0 required=5.0 tests=BAYES_00,MAY_BE_FORGED, NICE_REPLY_A,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_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 Hi, ?? 2023/07/16 0:11, Zhang Shurong ะด??: > If rddev->raid_disk is greater than mddev->raid_disks, there will be > an out-of-bounds in raid1_remove_disk(). We have already found > similar reports as follows: > > 1) commit d17f744e883b ("md-raid10: fix KASAN warning") > 2) commit 1ebc2cec0b7d ("dm raid: fix KASAN warning in raid5_remove_disk") > > Fix this bug by checking whether the "number" variable is > valid. > > Signed-off-by: Zhang Shurong > --- > drivers/md/raid1.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c > index dd25832eb045..3e294dc408fa 100644 > --- a/drivers/md/raid1.c > +++ b/drivers/md/raid1.c > @@ -1829,6 +1829,10 @@ static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev) > struct r1conf *conf = mddev->private; > int err = 0; > int number = rdev->raid_disk; > + > + if (unlikely(number >= mddev->raid_disks)) > + goto abort; > + This looks correct, but I prefer to use conf->raid_disks directly. Thanks, Kuai > struct raid1_info *p = conf->mirrors + number; > > if (rdev != p->rdev) >