Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp6372547rdb; Mon, 1 Jan 2024 22:16:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IHI14F/GNuTzslOP62knex/ORPFqR8b+VeSmcRqWYnP4961Y4hu43JReWz7m9ii76Ib6MaX X-Received: by 2002:a50:aa9b:0:b0:553:a3ec:85fc with SMTP id q27-20020a50aa9b000000b00553a3ec85fcmr12022010edc.12.1704176219641; Mon, 01 Jan 2024 22:16:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704176219; cv=none; d=google.com; s=arc-20160816; b=O4Bl5EJlDTCE3adipujanw0giVhAh441/K/AVYoVVSk/VeWRJowiruWM3wlTNnkCVk ygE8LuNSsgBcHpdIr4e76O2G1WxyCKJo0ozq/kBqZ1Vgaut+22K+zKzGu8+LcdehqbVP 8sqdQONK8YBxWN5Y3kPHOnfkeR/D1Q0wPnYo66/h5wKPz5mN/PHDeYxzFSRm2trBLb1Y Bjror1mmoXMo3X1WOBegJGHsWidBYlTcKjeeLeyEXLUPj06NcVZJDpP+6l8jR0Go/sz3 6ONyjYp8Voesl0EAjVU5mG76alVtivVaDQUzVN9SvYTUJRubaxDgfvfXG7HHHB5Bv57r pM9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:user-agent:date:message-id:from :references:cc:to:subject; bh=RyHQYTq41GfhXkIB0wl67oLqv0c4XaE0UI1LjmygIoU=; fh=BT+ER0q3jIXM9KZ0tejXHLluf7JXQ1HWSuY3W0OvLD4=; b=LDULZThe7C1TIKNWrWm3iHmyJL6Q2ZnVzU6paOu1ahWJX3bdSQR9I7Ql98BHx3P+Fy nSGC0auN78rXIYbaxn4jhzrGQySQPD3N8UioVix7puXxeNUn6E/Ym1u56+85cOUaZJi2 EL6Vl4hR+6c0Qz1mNhwrvRbsWqExjJ/4onS/r607bi/DW84Dpc3p28s0HilTUtGrDWyv lWp4RO4FJ5IY1aSN/or3HdExrgjqYnXAj1R61UylMV78UjMGUwIyPis4EKG6ALe9WrfV FEgybod7vxt6eEYUPBXkUsqaowE6t17ZdVHPqTLTi3iF7IpnPM5+STRQVt82izzw8ao+ W4zQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-14078-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-14078-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id s29-20020a508d1d000000b0054d97562779si11040968eds.616.2024.01.01.22.16.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jan 2024 22:16:59 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-14078-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-14078-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-14078-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 605601F21A05 for ; Tue, 2 Jan 2024 06:16:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A8C921866; Tue, 2 Jan 2024 06:16:47 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3C4C468C; Tue, 2 Jan 2024 06:16:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.163.235]) by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4T42g44pR7z4f3kkb; Tue, 2 Jan 2024 14:16:32 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.112]) by mail.maildlp.com (Postfix) with ESMTP id 62E731A017D; Tue, 2 Jan 2024 14:16:34 +0800 (CST) Received: from [10.174.176.73] (unknown [10.174.176.73]) by APP1 (Coremail) with SMTP id cCh0CgDHFg1AqpNlQD4wFQ--.57217S3; Tue, 02 Jan 2024 14:16:34 +0800 (CST) Subject: Re: [PATCH] md: get rdev->mddev with READ_ONCE() To: Li Lingfeng , song@kernel.org Cc: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, linan122@huawei.com, yi.zhang@huawei.com, yangerkun@huawei.com, lilingfeng3@huawei.com, "yukuai (C)" References: <20231229070500.3602712-1-lilingfeng@huaweicloud.com> From: Yu Kuai Message-ID: Date: Tue, 2 Jan 2024 14:16:32 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In-Reply-To: <20231229070500.3602712-1-lilingfeng@huaweicloud.com> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit X-CM-TRANSID:cCh0CgDHFg1AqpNlQD4wFQ--.57217S3 X-Coremail-Antispam: 1UD129KBjvJXoW7Ww1Uuw43uF1xCrW7Ww4fAFb_yoW8Jw4xp3 yrXFy5Wr1Yv3y5Cw4UZFWkuasYqwn3KrZFyrW3u34rZa4jqwnxKF1UW3yDXFyrZanrur4x XF47Wa1DX3sIgrUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkK14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvEwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc7I2V7IY0VAS07AlzVAY IcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14 v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jw0_GFylIxkG c2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6rW3Jr0E3s1lIxAIcVC2z280aVAFwI0_Jr0_ Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7VUbXdbU UUUUU== X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/ ?? 2023/12/29 15:05, Li Lingfeng ะด??: > From: Li Lingfeng > > Users may get rdev->mddev by sysfs while rdev is releasing. > So use both READ_ONCE() and WRITE_ONCE() to prevent load/store tearing > and to read/write mddev atomically. LGTM Reviewed-by: Yu Kuai > > Signed-off-by: Li Lingfeng > --- > drivers/md/md.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/md/md.c b/drivers/md/md.c > index 9bdd57324c37..3b38a565bffa 100644 > --- a/drivers/md/md.c > +++ b/drivers/md/md.c > @@ -2562,7 +2562,7 @@ static void md_kick_rdev_from_array(struct md_rdev *rdev) > list_del_rcu(&rdev->same_set); > pr_debug("md: unbind<%pg>\n", rdev->bdev); > mddev_destroy_serial_pool(rdev->mddev, rdev); > - rdev->mddev = NULL; > + WRITE_ONCE(rdev->mddev, NULL); > sysfs_remove_link(&rdev->kobj, "block"); > sysfs_put(rdev->sysfs_state); > sysfs_put(rdev->sysfs_unack_badblocks); > @@ -3646,7 +3646,7 @@ rdev_attr_store(struct kobject *kobj, struct attribute *attr, > struct kernfs_node *kn = NULL; > bool suspend = false; > ssize_t rv; > - struct mddev *mddev = rdev->mddev; > + struct mddev *mddev = READ_ONCE(rdev->mddev); > > if (!entry->store) > return -EIO; >