Received: by 2002:ab2:69cc:0:b0:1f4:be93:e15a with SMTP id n12csp1461638lqp; Mon, 15 Apr 2024 07:16:50 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUNc7hEvNahlAjKZn6HrqExum1IXqvjqyAaXy1HtaM5RohmkrwZ1WlrMTw0Nq9zCPzsl+W9poBIycFfp9cFgltwAWiJFzX+5+AB/l05Gw== X-Google-Smtp-Source: AGHT+IFsSmbt7126JWZFYbl6/jfseu+8fPTrSyxdAOpF7YsZKMRfFtYRaOgvJK8QXd2k+AzPZAyq X-Received: by 2002:a17:907:72c8:b0:a52:53f3:c835 with SMTP id du8-20020a17090772c800b00a5253f3c835mr4136516ejc.37.1713190610357; Mon, 15 Apr 2024 07:16:50 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713190610; cv=pass; d=google.com; s=arc-20160816; b=E1OoID+I8xjtIvjvSax6Tg7n/d3cID697EIPFA0tHMfRvsaDmGNMYcJr7mOh112Hyf OaQ9jzgqWv3v/HH0NtZfRHAanue9QmT1whFGIlSQ/JXsvifqZ0PbsP/yAu/pCEK5S63X u3v90i4lFZeT33cNGvvmouKkuxAy9rZ2w9Y+cKe0WGdcuL8hjaoN5ydObT8yzaRO12pK 5uZxm/VI3f1It6UInpIZ3rADnLHiVLkaxjO4K/+P3mkWO5OCHdBgWqfimvEiWnhr1tIe +UQ81eY24BvAE3NdqlDeZdTkMyyRNjb+7VwWRscbHt6bcVu2snKLIgXVwPMgF0ZGNMfl 36yw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id; bh=zXkh7pBYH4QGbprw6Amtf4nVXkgumeKPuolVnNbFyQ8=; fh=z2wOvK52NyhD2f6oMdbgtnpGzJmJwLUTO0Gifx9x0eo=; b=VZywZ5jNThW0V8HlLw8+bw0WGSREl1YJzvyKWXP6/DViz0ZoVMsw6616Rr3524FGD7 QQpfVnCPR3GTzqNR0QUEYcuGMPU+dY5fOnuKJhbVSbEJwZVdhHc47iPKhw3WDO+Qg6ip zDBElKGQGxmPNat8Ay1ZvLoazghyzoF1a+CXLnfQWRZl9kQx+4ZrZX4J6BuL/IsQDW6n SKzjB5QhyfJSuXjngLV8PF0/KsbvOXI3pAPzqb6goVeKhoZvi700udN41pWgqmCSHx8N 3wl+/NbJxdTkHpd4rEbroKYRHz/xk3nrr1mx8w6c00ZC06lWQTl243kx+46suUZ25ZoZ HijA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-145323-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-145323-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id cw9-20020a170906478900b00a4e5860e488si4740717ejc.741.2024.04.15.07.16.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 07:16:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-145323-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; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-145323-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-145323-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com 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 2E58C1F23E57 for ; Mon, 15 Apr 2024 14:08:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C4C4F74437; Mon, 15 Apr 2024 14:08:35 +0000 (UTC) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) (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 2BBA31BF2A for ; Mon, 15 Apr 2024 14:08:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.190 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713190115; cv=none; b=lCVCa4VFXjj5l8NF9a3/Qp2g5mD03ovwGQzt3MXa+dlVewLIQ1bz2Z7UkN/R9V4GrHiEVQVd8c7xKNkvs4xetDxeU36fvleqVCm1CtugMCfQscIR57bhX49mtgkhjwjILy8x3iFB67aSYYvA9Na7/EIBB6TeyaD0jxfcpK6L8xY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713190115; c=relaxed/simple; bh=h5EZPa9BSTZ+IOVlGQn5DV+g0jxDaU/2YCEBbkHDlZM=; h=Message-ID:Date:MIME-Version:Subject:To:CC:References:From: In-Reply-To:Content-Type; b=EWzsLO+dRUGNN9nD3o8896rHuSOIMS4B4S+HHE/ouuf+egyezILPpLeIuISXZae29LqcjrB5CPNNplY6BzK0OP9ggJ1TYHN744JXBspSCQmUj44e1PR13DPkYy4h3z3tGomGLOFKt5Vrux0d5xokMOVwfTSitUV5mTU/xPzeiP0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.190 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4VJ88w2NJGz1yndq; Mon, 15 Apr 2024 22:06:08 +0800 (CST) Received: from dggpeml500021.china.huawei.com (unknown [7.185.36.21]) by mail.maildlp.com (Postfix) with ESMTPS id 9BB3F14011F; Mon, 15 Apr 2024 22:08:29 +0800 (CST) Received: from [10.174.177.174] (10.174.177.174) by dggpeml500021.china.huawei.com (7.185.36.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 15 Apr 2024 22:08:29 +0800 Message-ID: Date: Mon, 15 Apr 2024 22:08:28 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.1.2 Subject: Re: [PATCH] erofs: set SB_NODEV sb_flags when mounting with fsid Content-Language: en-US To: Christian Brauner CC: , , , , , , , , , Baokun Li References: <20240415121746.1207242-1-libaokun1@huawei.com> <20240415-betagten-querlatte-feb727ed56c1@brauner> From: Baokun Li In-Reply-To: <20240415-betagten-querlatte-feb727ed56c1@brauner> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To dggpeml500021.china.huawei.com (7.185.36.21) On 2024/4/15 21:38, Christian Brauner wrote: > On Mon, Apr 15, 2024 at 08:17:46PM +0800, Baokun Li wrote: >> When erofs_kill_sb() is called in block dev based mode, s_bdev may not have >> been initialised yet, and if CONFIG_EROFS_FS_ONDEMAND is enabled, it will >> be mistaken for fscache mode, and then attempt to free an anon_dev that has >> never been allocated, triggering the following warning: >> >> ============================================ >> ida_free called for id=0 which is not allocated. >> WARNING: CPU: 14 PID: 926 at lib/idr.c:525 ida_free+0x134/0x140 >> Modules linked in: >> CPU: 14 PID: 926 Comm: mount Not tainted 6.9.0-rc3-dirty #630 >> RIP: 0010:ida_free+0x134/0x140 >> Call Trace: >> >> erofs_kill_sb+0x81/0x90 >> deactivate_locked_super+0x35/0x80 >> get_tree_bdev+0x136/0x1e0 >> vfs_get_tree+0x2c/0xf0 >> do_new_mount+0x190/0x2f0 >> [...] >> ============================================ >> >> To avoid this problem, add SB_NODEV to fc->sb_flags after successfully >> parsing the fsid, and then the superblock inherits this flag when it is >> allocated, so that the sb_flags can be used to distinguish whether it is >> in block dev based mode when calling erofs_kill_sb(). >> >> Signed-off-by: Baokun Li >> --- >> fs/erofs/super.c | 7 +++---- >> 1 file changed, 3 insertions(+), 4 deletions(-) >> >> diff --git a/fs/erofs/super.c b/fs/erofs/super.c >> index b21bd8f78dc1..7539ce7d64bc 100644 >> --- a/fs/erofs/super.c >> +++ b/fs/erofs/super.c >> @@ -520,6 +520,7 @@ static int erofs_fc_parse_param(struct fs_context *fc, >> ctx->fsid = kstrdup(param->string, GFP_KERNEL); >> if (!ctx->fsid) >> return -ENOMEM; >> + fc->sb_flags |= SB_NODEV; > Hm, I wouldn't do it this way. That's an abuse of that flag imho. > Record the information in the erofs_fs_context if you need to. Hi Christian! The problem here is that when mounting erofs, if we have an fsid then it is not block device based, if we don't have an fsid it is block device based. So only after we confirmed whether we have an fsid or not, we can confirm whether we need SB_NODEV or not. -- With Best Regards, Baokun Li .