From patchwork Thu Mar 20 08:27:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yuezhang.Mo@sony.com" X-Patchwork-Id: 14023531 Received: from mx07-001d1705.pphosted.com (mx07-001d1705.pphosted.com [185.132.183.11]) (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 9259613A87C for ; Thu, 20 Mar 2025 08:28:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=185.132.183.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742459302; cv=fail; b=uvha30oCpds+z7gMp9mEwLLXNPUCTxftIZebP7IkeGcc+fD84E1kagHwnvACHHXVz0Ytd8ToQDT7FUoY4lA8TZ2E68+nvcHmHz/ZYYtvTkZ6Krsh9ovvW90Zc0YKItLD7TxIjzkP2n51Pfo4SOm7AfYiAh2SoVjbtGpESq26A+w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742459302; c=relaxed/simple; bh=JEnx+5t6CS3fVPvDikvk+OC2TXCyKl33cz9TUoikuO0=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=nG1iX+RpMPl5I/spdyI8+yLsRiM0Y5VjGMNFF9dFWLrDCcZ1nmWofRwzml5zcVCrSQGI576RsnUBNY8Y16d//6T/Gd7BPuc/6hLxkSCNSxgoUeg0cD6zfVG5yIcyhNyHI19xPf0dETehrGkczUWbEWfS3C4UI8yE6ncjIjnvFc0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sony.com; spf=pass smtp.mailfrom=sony.com; dkim=pass (2048-bit key) header.d=sony.com header.i=@sony.com header.b=G/V0Cp1T; arc=fail smtp.client-ip=185.132.183.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sony.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sony.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sony.com header.i=@sony.com header.b="G/V0Cp1T" Received: from pps.filterd (m0209326.ppops.net [127.0.0.1]) by mx08-001d1705.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52K6c96M001046; Thu, 20 Mar 2025 08:27:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sony.com; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=S1; bh=t//YFQKb2ZmO+5lUIvNabDpOzDD1g kT1wxmdb95ah4g=; b=G/V0Cp1TeAqSAEe4hCGadZ6stIaqDeg9b7DY3S10TDdlp SuMZH/h8zW6CmzoaNsaG52NFPhK2U1Jh68dC1lhUXE+1IDvmW3dVO2jb+Wy9l0y/ F7aIKi4ivuOYg56rsmqdTlQ+SGubq7SmVMZmiB9zIfUUtFojkP7L3WZLr6Kr2c+m puPE8DbCbOWZHm9AYucoiQVWc1BoiYKi3HveHxx/lABcakPSR5bzuRnxb9C8FtW9 Hy2KuNOe7SaQkm0PCqZN5nVQy2q3xgxasNitUPzx/99YJqhPO0pb6PyEvEHWoaHu BlhpO8KHrZA5uB0AI1yLxpYx90qDNxCDtIaCRaZfg== Received: from apc01-sg2-obe.outbound.protection.outlook.com (mail-sg2apc01lp2112.outbound.protection.outlook.com [104.47.26.112]) by mx08-001d1705.pphosted.com (PPS) with ESMTPS id 45d1kvvs9m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 20 Mar 2025 08:27:54 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ua/yd7KTDuYO6/wYXniGyp4qQjfiS2VpTvYONUZs8e7fJs2JBmMkL4q/LSHgCBOn+G/5YOg+WukliAQ1QaNEePx2CUS/Qu9FBtSMVEz2tBeAMKRKw4VY0YFKtmPJ3TOqVivaUuTDDqtuWOdjjbYIUnurQDZDze82FovHbrlrt7jaj0sZJ60YJIfQHQ/qXJ/7c05sfqJAjTmcIc2ZnNSd2X/l3VwvhkTP1JyoDE7aQNfKi2zlc8BI64gE1nl8cq62qkc3Cfg5oVDWryRea7ip0U3iRY6oNWm71kRvhmZv7IoX2WwP1zzOAgVQ0zSU70J50pp82qhxqoLjWrtC/k4YaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=t//YFQKb2ZmO+5lUIvNabDpOzDD1gkT1wxmdb95ah4g=; b=sZn8ZowpD9Bm8rAcmhLXRhfShNL87rzQf0v5GV/g4a4TGCnG/PPf03sjjPnrUXIdthS31dNtuEQtZrsDimgXdY/ae1DTfhB5xX9A0uDqf/pPYgK6ZDa7tnWSlDG7rQcYz2aKf4gkgCRxB8F/cy8HXCNoWUShc6ZmLKA9NSJRuufRky0fAiy24omkqgTRMmPsDFcFCOXV2+e84bo6hPr8fwV4NNDQ1k5BC66fmnHVY8YuKxTGXCk+ARWWuLAV79+mfsidwyUbxT9VexoNln1vxiPQYmkV2/dDAj5FrCx81Q5AAAMqfh4zdi0Yq62KWMTfOkmwCIgH9Nv+LzBUy+3wMw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sony.com; dmarc=pass action=none header.from=sony.com; dkim=pass header.d=sony.com; arc=none Received: from PUZPR04MB6316.apcprd04.prod.outlook.com (2603:1096:301:fc::7) by SEZPR04MB5755.apcprd04.prod.outlook.com (2603:1096:101:76::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Thu, 20 Mar 2025 08:27:45 +0000 Received: from PUZPR04MB6316.apcprd04.prod.outlook.com ([fe80::409e:64d3:cee0:7b06]) by PUZPR04MB6316.apcprd04.prod.outlook.com ([fe80::409e:64d3:cee0:7b06%5]) with mapi id 15.20.8534.034; Thu, 20 Mar 2025 08:27:44 +0000 From: "Yuezhang.Mo@sony.com" To: "linkinjeon@kernel.org" , "sj1557.seo@samsung.com" CC: "linux-fsdevel@vger.kernel.org" Subject: [PATCH v1] exfat: fix missing shutdown check Thread-Topic: [PATCH v1] exfat: fix missing shutdown check Thread-Index: AQHbmWdDiMaE5gEqTkOoI7qdkz+ktw== Date: Thu, 20 Mar 2025 08:27:44 +0000 Message-ID: Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PUZPR04MB6316:EE_|SEZPR04MB5755:EE_ x-ms-office365-filtering-correlation-id: c1dd5847-b454-4c95-a59d-08dd678916a9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|10070799003|1800799024|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?lAu4WQEQCrUoeGEm787C7rRyLf?= =?iso-8859-1?q?yWo7CMMMWvb6S0/WzI9ujm5O2IkcOUABv3+dqIVq/fJtENZ/LJoKr8/3HFIs?= =?iso-8859-1?q?vonF1Na2OHbm54tHf/9vIVCqiZnDiMtuLDb6xM+Hr+cLqQAJbU5F3Ioxl0YB?= =?iso-8859-1?q?yeFVtlgxNrehmZcHi3o6p18s3bZXKLfI5CG+i2GyUpPKxyOIsZeX2wJjvWWp?= =?iso-8859-1?q?PElto+TcFDnyG6zEq6Hu/zsp0O5qIy8/r7EbHDGG+JBiNE3WTwhdNLku8Da2?= =?iso-8859-1?q?SaUOgZQoFIjuZORTveSLKi2LmJKGAuisqQL5Rf6R2IHOzCjfmCUieqpseE1z?= =?iso-8859-1?q?jEgxxuPIRR95b4Wlc0qfSz65SShEVURBPPm2038m/7++1W7Z4hV/LDdhkgBD?= =?iso-8859-1?q?528WUrskkaFrwIXYzHBxhfXwyB4syJgLGMy16Y4YLEIyhNdnN8IOZKZBUGdh?= =?iso-8859-1?q?AjjkV4pRpqt3qCUQNv14jrDyLGYAz5qavVYTI0nEbRpMTqiC0VthMgjra/0V?= =?iso-8859-1?q?5ofrdqonLPYM4qoQb5QpoNTs1M9ZSoqHZuyn+WkNRiqMcIVSm3JPtMkYkyGD?= =?iso-8859-1?q?80u/l35Pd8yqBlByT2qOd17khJyJy3n+3W6W8SWbj/+4xoYb8ik5gWjiF/1d?= =?iso-8859-1?q?XwQYnpW/4fSrIj4kqQJxWzEgtjkTQwOcumGKhrp2fIOwGBYOALwFKOmN7lPC?= =?iso-8859-1?q?V/1elS0vTKfthhJRv6PZTq/BZq8WAtvK50c1k8Tbln4UFIKHjsoc9/1bp6LC?= =?iso-8859-1?q?OA0o5hFAd/8RQQahpGLY14VT2dUUznZOMYIH8Uwga1hlcz+bwFKo6MWe+Ogo?= =?iso-8859-1?q?n8pnxUbcUBlW6XqXdSTqm5yCyDeV4joNnMPGtes93GC6bbTfRK5dMW3wMsYq?= =?iso-8859-1?q?MqrIzYdec8Jq2bxCZvNKVeLRMbDirJ93+2KrcOsTJlUsXSxTb/1Fkj1UTten?= =?iso-8859-1?q?ACOjU6L5ifMw8oMaaClPF+bPwHLj79XxxTLOrlIVKQu6txHQ9v065gn4mSA3?= =?iso-8859-1?q?Y5iFv7Zox43qeo012R56xj3I2+iNrnOZp7vHO7R058IF8+YeKgDZ6aW8TnNt?= =?iso-8859-1?q?V0hpIIbGTv5KYLpSVAJ7bErBPiRUYqctxB6WgvF3yEH0jrmzR6Kk7BI+Ywf4?= =?iso-8859-1?q?ntEH8Km/d/zsakjOxZLC1VNABM13Xn+feITFKC0wFYTPjkaKNQE/yi8QUYaE?= =?iso-8859-1?q?1E18Y7IwSCHGeeMZ+AbaNpYrldlJQlKIu+jcuszZ84Vjt16qQSiIqAuqd/ZL?= =?iso-8859-1?q?7ixhxl+KhwtRlcG4F85srCiyQieeKhO+HTQnV7hqsMpcZwPU+dRImv9WnELs?= =?iso-8859-1?q?qsa8Sb4/DWns5u3KLwtqL1xCftCerGjSzAcGfJD5c2F8JSfyJp2xVnuXIHkA?= =?iso-8859-1?q?g8Xt62nUWK3pW4qbPP0EOvE4BhYVav0CPST8zGQgHS4TTB2XxQt2mOWEpgK+?= =?iso-8859-1?q?ud1EAcq/ouUKWrZXcIDWY4TakYm+HRpbVTLQPbDGJNvR9F5HtanKrznBMrQ4?= =?iso-8859-1?q?3d0Mj4?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR04MB6316.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(10070799003)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?eIRCI17PjGf6gzlgp5G+EFy?= =?iso-8859-1?q?vQog3j7fVTA1UNEsrifJoDj3gQ3nssNWY8q55cpm6otRzF34lwQxhlZ42Mut?= =?iso-8859-1?q?zUms5uthW7ysEWUa/2A1ieuur1HT1FZyqz5IWc2mqeDaP8EDJs8ChwbroasW?= =?iso-8859-1?q?aw+RJfcOK8n0gPE1TTNjKdCRBamtb1QHRQTJPZy1VAH812OnJ6Q7qYHhqZBm?= =?iso-8859-1?q?DViVwfAI3aqhg2brczEwEUzpn8EoLq7XZSP/4eoOBgmhm+c+NyBIzdnBGBiw?= =?iso-8859-1?q?IeYEZPCnT0wFYAgPzV82pM6q8Nk7CDBhpym6x/xu7odGR8YoQ9iiGdg+Mrn+?= =?iso-8859-1?q?OcWLjsX6CI7WSz1MbqJzPkPCJqZ+0k9qEsqbEu7Dhb8B4QGNZMTaFvCqUzJZ?= =?iso-8859-1?q?Us9nzoMVUE/e72yROgH98bUAOxWY+7HVqDKeThebWyjmsM9VXFz+rBf4Ctqv?= =?iso-8859-1?q?y+dFan7kXEPyX+3QMUCN5W0uk7NHzi/Ms/VPYmu20FsCoOITzJY1gMUHSE06?= =?iso-8859-1?q?x4njZDRhc3HUV6epDnM9Lhsv4CzTA6+aCrJXf1L365NtqdZGOHgCxbYpCqD2?= =?iso-8859-1?q?DK2x/cfryaCQhZhpUpkAY76SohWlsZ1QSp/ZbHZQnAyPNOBbLimjaMuIYiiR?= =?iso-8859-1?q?o+q8iQLQveE1inH8aPvapHU5JyrqU9ixG6oDgPet4rn1r14VjgvOHtvHfGEj?= =?iso-8859-1?q?feM+iyxIvMfIMPSh5q1WtKM4siTzXffBYEOkwdNvxQbCF/5GKb1P8gj6c+S2?= =?iso-8859-1?q?gk2fnswLE55MEMVA53A6ZxvfcFqeHOs3dAOA4bX4ohSf7dnA9sXe+SWC60ff?= =?iso-8859-1?q?Wdk6X4ObVmTnhbs9fGx1HIl5jqEsGJBh2rJf1piJzGPBQMwrtmplSxs1voSO?= =?iso-8859-1?q?xUFaNILmm/75FkNeFW02VFWjto04uyVJJHLTA/jNc3dmgDqD2oiB14h4Z+nk?= =?iso-8859-1?q?L+AYZIpTozJjdot5lXt7qEUItEWLElkpQY8C04qcZI1+XP3RQnKBtG4DaRhl?= =?iso-8859-1?q?Y6DzR5BiHfh/ETGJjjredF8bZc40e0vhzOzQN7jP/0V1MBbpUkvUqQzKLAIL?= =?iso-8859-1?q?YphwWjE5FF2N6csalIpzonH+96MggA/Kvg3JhveLzRDRCMs8GdJjKARo20Sy?= =?iso-8859-1?q?IKCxgjw+e0ow8zidKmnR9lYjmhb+63ewS8XroIwAsK/lWRAkUVzkwfkyGWgl?= =?iso-8859-1?q?eZKzGeIdW+N1ce3Bafjfrrn76a8RuqLrOJvYeUpPRkGzzjK90zHLhiEexJY5?= =?iso-8859-1?q?k2P9dbAXuPLz0OVhBiTLGyY4RqLPjL7dVhWXhQwwz1knowsflFxWCPtXG2ir?= =?iso-8859-1?q?AoEb4DkDWWiFa/LpAgkDPCw4atfFcTgkvBF60d6IDuHzQZi4XP66go83iAAp?= =?iso-8859-1?q?VgapfbBs4LgE0i+9+i/W4nfSM4i/AnTmL4Vv68JmHfV0veHXW5ZcvSvvC3AG?= =?iso-8859-1?q?cLbcNZVuLbij+MNx5Fmp8hj8NqGTA84VZqtmyOyiDJxzhSQMv/r0/AYeXDJF?= =?iso-8859-1?q?tVFEd3kGvAkwfBsl+kS8zQZGng22Rk3/mAMkAj1DqBND3K07/fDXcW/RpAXm?= =?iso-8859-1?q?wy7zquHUhY4DJoBeWssGLYfcG9eSIqEiFKXZkqWvR+ZR79Bj2T8SnWRRCdyt?= =?iso-8859-1?q?EqQk40ox+sfduWlZhMq8ZTS5tLSlJk5+XHMHcN2wRDgldg6z+3ggVBbM3PDU?= =?iso-8859-1?q?=3D?= Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: bAES+tNUTQqUybWtAid9rGIwAZeLwzs1tNHLp58p6jyT48pQYFGdnQanPWmxT07nfvxM2Y1k4T7HXA5xdN7V75PFuJBN+yH59CVuR7M9shVT7VYo1oxKM8wBT/vP7ATmw7Be1H1SNyPjTp9LhRfK+7NdI8sTjUTkupsw+D9RWumQ79bEqykx3sTJz52NZ+Yy7sy5XkKc4IkTRCxRPO9oRW7/L9ke3O/PlwIVDh1HiorrIHrzwjTSZpb1yCYu9eTqhAByPYijbkdo3U5akCEa00AkuDQqkQaqxvfl/6wElNjE0wQScUH9qtROHpJaJB31kEccDy+C/K2q2TB09v8d10geScb52In+m3SwMEUiHJIxJ1vQoGhCiT6FTBKYC4rhbm4bdXDsxJvac42WeRlvyuXDtrAfu+GOytxO2hwmqh/7YVPGmMeURUBctXYzZjE84PfnJ28BjhKh/AGeOSkoHJrwPzyiF5AcJs+da0j6hwW88m/25C8MEPti07U+MMYECG6EKTGdCxxL0UsCnNOr8tVSOhJvMsHHNRwGD+9shySkmFnSGQJLtuHpxXMUmn+J3kEY4RKF9Xa5rHb7PRuuLnBR5G1UqMm2pOEOlar+ERu5XMIsH8So28il+x8L3UjH X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PUZPR04MB6316.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1dd5847-b454-4c95-a59d-08dd678916a9 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Mar 2025 08:27:44.4664 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 66c65d8a-9158-4521-a2d8-664963db48e4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: b7Twstr2zisTP5qQNkpY0xozznHHeS5YD9mzugWPy8gvmgvaOaPwdHdogOK5CYBs4eIu89Hfyqk1w0ANf8469Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR04MB5755 X-Proofpoint-GUID: G_xHtX-vc2_tm520XZNS6rl3b050Dr7_ X-Proofpoint-ORIG-GUID: G_xHtX-vc2_tm520XZNS6rl3b050Dr7_ X-Sony-Outbound-GUID: G_xHtX-vc2_tm520XZNS6rl3b050Dr7_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-20_03,2025-03-19_01,2024-11-22_01 xfstests generic/730 test failed because after deleting the device that still had dirty data, the file could still be read without returning an error. The reason is the missing shutdown check in ->read_iter. I also noticed that shutdown checks were missing from ->write_iter, ->splice_read, and ->mmap. This commit adds shutdown checks to all of them. Fixes: f761fcdd289d ("exfat: Implement sops->shutdown and ioctl") Signed-off-by: Yuezhang Mo --- fs/exfat/file.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/fs/exfat/file.c b/fs/exfat/file.c index 807349d8ea05..841a5b18e3df 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -582,6 +582,9 @@ static ssize_t exfat_file_write_iter(struct kiocb *iocb, struct iov_iter *iter) loff_t pos = iocb->ki_pos; loff_t valid_size; + if (unlikely(exfat_forced_shutdown(inode->i_sb))) + return -EIO; + inode_lock(inode); valid_size = ei->valid_size; @@ -635,6 +638,16 @@ static ssize_t exfat_file_write_iter(struct kiocb *iocb, struct iov_iter *iter) return ret; } +static ssize_t exfat_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) +{ + struct inode *inode = file_inode(iocb->ki_filp); + + if (unlikely(exfat_forced_shutdown(inode->i_sb))) + return -EIO; + + return generic_file_read_iter(iocb, iter); +} + static vm_fault_t exfat_page_mkwrite(struct vm_fault *vmf) { int err; @@ -672,14 +685,26 @@ static const struct vm_operations_struct exfat_file_vm_ops = { static int exfat_file_mmap(struct file *file, struct vm_area_struct *vma) { + if (unlikely(exfat_forced_shutdown(file_inode(file)->i_sb))) + return -EIO; + file_accessed(file); vma->vm_ops = &exfat_file_vm_ops; return 0; } +static ssize_t exfat_splice_read(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, unsigned int flags) +{ + if (unlikely(exfat_forced_shutdown(file_inode(in)->i_sb))) + return -EIO; + + return filemap_splice_read(in, ppos, pipe, len, flags); +} + const struct file_operations exfat_file_operations = { .llseek = generic_file_llseek, - .read_iter = generic_file_read_iter, + .read_iter = exfat_file_read_iter, .write_iter = exfat_file_write_iter, .unlocked_ioctl = exfat_ioctl, #ifdef CONFIG_COMPAT @@ -687,7 +712,7 @@ const struct file_operations exfat_file_operations = { #endif .mmap = exfat_file_mmap, .fsync = exfat_file_fsync, - .splice_read = filemap_splice_read, + .splice_read = exfat_splice_read, .splice_write = iter_file_splice_write, };