Received: by 2002:ac0:e34a:0:0:0:0:0 with SMTP id g10csp86183imn; Tue, 26 Jul 2022 23:49:49 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s5B0FMIaGZcMo26wXB9hAjwQNPArzckX/lkJPEq70LiC+mej7Gj5U4C2EhHIbTWayRttlN X-Received: by 2002:a63:494a:0:b0:41a:56e8:62e2 with SMTP id y10-20020a63494a000000b0041a56e862e2mr17217174pgk.586.1658904589065; Tue, 26 Jul 2022 23:49:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658904589; cv=none; d=google.com; s=arc-20160816; b=AN2Hozv0MK9bq8ytmzQiLAZNaR47guQEgOcXGkzycjH/qWWi7sgCxmgD99rYmiNcxA bt573PQihjTkERzMVmloSqEXHQjS6VktgSo6GvYarUAsV3CM43DF1x0mZKj/NnOwOffQ 1It9M6eKBGzb4QZ24XwMnQ89VGttkfN6+te/l9xhpLcqo6I6hST9EiR2/DDkZ6YXJWtf 3UBZu7CT8aHaXkDD5dz+3Rl1wo2vg9LD8YwtsbjRTx+TPg6ASuLRAiAByyESJsYeAV2I D1dqjQsP6pZG8hcTKx/p3Hus0B3BKSu3p0jsdIx4jarD9XW86d1oUThy3F4eDixNs2qP 0U+A== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=sWSvmewN8U9kt58F9ww9X8uKXCBd0vWKU9SNeTfLslw=; b=bEjqpWlwejL0tqj726Op42sQCFprMBmD8KlYe2m48KyZL9GhsBHvk0xU10hN7uBEBz IsTt+G+GyF/AmkuVMWtgYPiueYKDuJ8wt3anfJMc4Wryq9hWLSgrOzKjNREmMh7N5jwi KtLoX0q7p5PeBjVTAlFLpY6meGjjaSkWlFeBftk1cGsTwAncSJ3ulKhHVja6AySbWkJw WrMDTZkk8q0i2doIt0cESRujqZ6d6DDuf7dCah01aN4rsbifL+6VXW+bruFEi2Hm8CuE dVXlYUYZeWZn043z1PrpcrjQ9ADyZ2WWOEZnTb83KzGj9foz0wgb5mCqkrjvdhAV2cRD zlLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=UgZyI+8Z; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u16-20020a170903125000b0016ca0533a62si25033793plh.306.2022.07.26.23.49.34; Tue, 26 Jul 2022 23:49:49 -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; dkim=pass header.i=@chromium.org header.s=google header.b=UgZyI+8Z; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231358AbiG0Gpk (ORCPT + 99 others); Wed, 27 Jul 2022 02:45:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230169AbiG0Gok (ORCPT ); Wed, 27 Jul 2022 02:44:40 -0400 Received: from mail-pf1-x42c.google.com (mail-pf1-x42c.google.com [IPv6:2607:f8b0:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ECA63402F0 for ; Tue, 26 Jul 2022 23:44:39 -0700 (PDT) Received: by mail-pf1-x42c.google.com with SMTP id o12so15271527pfp.5 for ; Tue, 26 Jul 2022 23:44:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=sWSvmewN8U9kt58F9ww9X8uKXCBd0vWKU9SNeTfLslw=; b=UgZyI+8ZRH9W4R1ZiXQuf5elOfzwzK3VgFjPnmCKtadKmj8BmyEnKJ2+MUAPB9VxA8 0Lj6bhHd0t9Fh35N8XQf2l15wUiEJktNdblYfUP8pIuUAzQLp1cQyTWW+TRYX2SqiH7+ NKfyNIl73Pv3GU95pp7iaHsbQMrcpC6MSm9bU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=sWSvmewN8U9kt58F9ww9X8uKXCBd0vWKU9SNeTfLslw=; b=p89N++/YS2LI4R7CxHETCL9ftwUFtuy4ydlsHMs+URi5TmgX8RS2ZO5LWypP7LSrLr 1CAh16rb66vpWSMgczknM4dm3IlfX7Xx2ulQU4zPqWh1fStgXFe4irmDguShOttSYpdO Ozs0ou3kJTLHp+8dI4rR7BDJ6+u67t7i6NveiXP5L85u2gTC9owRg+dLJV93JHRnYk3V 9r1ncFgnCCk4WIU5+D0usKZkXPk/lf8La69ylJ3uR/ZUhws1nsQS0bw1JGfJkl2Xwf70 6p02VdWgJrhzKZmVQWe46OwdUXWlzUIb39DX87Iy5Q2ZPc9PqDeYxsskj1NVYned+1V+ FZkw== X-Gm-Message-State: AJIora9X/JZDDGNXbtmQyqp8xbUdHelJOL6LtN7pEZn14KwJ3eeU8VdD fzfQAHKzQNbdMaRVwdtu0BSc1Q== X-Received: by 2002:aa7:954a:0:b0:52a:bd44:d15a with SMTP id w10-20020aa7954a000000b0052abd44d15amr20359778pfq.35.1658904279373; Tue, 26 Jul 2022 23:44:39 -0700 (PDT) Received: from dlunevwfh.roam.corp.google.com (n122-107-196-14.sbr2.nsw.optusnet.com.au. [122.107.196.14]) by smtp.gmail.com with ESMTPSA id f4-20020a170902684400b0016bdf0032b9sm12627001pln.110.2022.07.26.23.44.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jul 2022 23:44:39 -0700 (PDT) From: Daniil Lunev To: Miklos Szeredi , Alexander Viro Cc: linux-fsdevel@vger.kernel.org, fuse-devel@lists.sourceforge.net, Christoph Hellwig , linux-kernel@vger.kernel.org, Daniil Lunev Subject: [PATCH v5 0/2] Prevent re-use of FUSE block-device-based superblock after force unmount Date: Wed, 27 Jul 2022 16:44:23 +1000 Message-Id: <20220727064425.4144478-1-dlunev@chromium.org> X-Mailer: git-send-email 2.31.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 Force unmount of fuse severes the connection between FUSE driver and its userspace counterpart. However, open file handles will prevent the superblock from being reclaimed. An attempt to remount the filesystem at the same endpoint will try re-using the superblock, if still present. Since the superblock re-use path doesn't go through the fs-specific superblock setup code, its state in FUSE case is already disfunctional, and that will prevent the mount from succeeding. Changes in v5: - Update commit messages to specify that only block-device-based superblocks are affected - Restrict retire_super call in FUSE to be issued for fuseblk only. Changes in v4: - Simplify condition according to Christoph Hellwig's comments. Changes in v3: - Back to state tracking from v1 - Use s_iflag to mark superblocked ignored - Only unregister private bdi in retire, without freeing Changes in v2: - Remove super from list of superblocks instead of using a flag Daniil Lunev (2): fs/super: function to prevent re-use of block-device-based superblocks FUSE: Retire block-device-based superblock on force unmount fs/fuse/inode.c | 10 ++++++++-- fs/super.c | 32 ++++++++++++++++++++++++++++++-- include/linux/fs.h | 2 ++ 3 files changed, 40 insertions(+), 4 deletions(-) -- 2.31.0