From patchwork Tue Oct 10 02:09:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: cheng.lin130@zte.com.cn X-Patchwork-Id: 150446 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:a888:0:b0:403:3b70:6f57 with SMTP id x8csp2230589vqo; Mon, 9 Oct 2023 19:09:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEEWZrKTu4rvtx+QOjj8Shnh6voI9CKZ3LSbK6fqfWuu17AONNzs41q7O5gdqa9ex3S2MhQ X-Received: by 2002:a05:6a20:9387:b0:15e:f2a1:dae with SMTP id x7-20020a056a20938700b0015ef2a10daemr18207795pzh.27.1696903782314; Mon, 09 Oct 2023 19:09:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696903782; cv=none; d=google.com; s=arc-20160816; b=ZzJxXez1AtGkv5VhExqpmhS/v1Gj9p93FC/i0OtK05EGV7v4013R4rIUEuGOUiwXHu 2HeHDFj7S5o+eaLUzczEfeCZNsyj5a3FtyUKxEsP9P7DF/xjL4kfi+b0fbjjGESF9u7r ayxkAkRUwN5hxFExrrme00L7qgJEKt4xrgAP6gAG4e+wK4GKiKx6lWeWLgSoUeU9KXVO Cogcvv2299DlMCHNKUlMBhlL9PvoaBhO8Lche9s0FEEDDiabXA99oXlF7gsgKMvhYhme iFXa3olvrRSIfcpOW9u8cu87KisWC7PfZ5TqYo33g8QAeIpaMYl8FuNzuvM70HmvrWFN E71g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:cc:to:from:mime-version:message-id:date; bh=FAX0QxT5u0rjyfERM+BMLyiKyWTusrHe3wj+GcY5JuQ=; fh=hFgfcaIVoyhXbF2UwJZsnqb6ugEoYRhxDBvi1f/p9Jo=; b=mpAEzbqZDt8FxjxvueOUKR4ha9k/mz94eau59CB3lN52HoMKGXwiSYmXiFz78h2y06 6P1YpJ+28VwF776j22AnSp4vdHqGVNR7fl/9ohVxtWsDMmU6rYNuEuFda9ILoavvlsje b1aUhJlyFaty//mtzF9rNC8vZ27f9qPyJXO+l37zwROuDQwZ9ROzArq9LioJ58Bk7duv 7n+nwhdeBVuK9WyDr37emk7q4YBCIcXqysOeu5tNo4TUW37jMXNNlnZbVbgIK9x8zUBX x8LL6CTwvoicbt/SyNK4EBcwV+OQcatHLpMgGuDYEyNciYeqNbEGPXgxm3OFLnDFuIkG NaNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id l25-20020a63ba59000000b00585a6bdce46si11160695pgu.308.2023.10.09.19.09.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 19:09:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 772C18256BC7; Mon, 9 Oct 2023 19:09:40 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1379355AbjJJCJb (ORCPT + 20 others); Mon, 9 Oct 2023 22:09:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379354AbjJJCJa (ORCPT ); Mon, 9 Oct 2023 22:09:30 -0400 Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.216.63.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 56F0DAF; Mon, 9 Oct 2023 19:09:21 -0700 (PDT) Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4S4K8Y5MRRz8XrRC; Tue, 10 Oct 2023 10:09:17 +0800 (CST) Received: from szxlzmapp03.zte.com.cn ([10.5.231.207]) by mse-fl1.zte.com.cn with SMTP id 39A28xCV002979; Tue, 10 Oct 2023 10:08:59 +0800 (+08) (envelope-from cheng.lin130@zte.com.cn) Received: from mapi (szxlzmapp07[null]) by mapi (Zmail) with MAPI id mid14; Tue, 10 Oct 2023 10:09:01 +0800 (CST) Date: Tue, 10 Oct 2023 10:09:01 +0800 (CST) X-Zmail-TransId: 2b096524b23d550-fc3a0 X-Mailer: Zmail v1.0 Message-ID: <202310101009011817522@zte.com.cn> Mime-Version: 1.0 From: To: , Cc: , , , , Subject: =?utf-8?q?=5BPATCH_v6=5D_xfs=3A_introduce_protection_for_drop_nlink?= X-MAIL: mse-fl1.zte.com.cn 39A28xCV002979 X-Fangmail-Gw-Spam-Type: 0 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 6524B24D.000/4S4K8Y5MRRz8XrRC X-Spam-Status: No, score=2.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Mon, 09 Oct 2023 19:09:40 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779332580375570301 X-GMAIL-MSGID: 1779332580375570301 From: Cheng Lin When abnormal drop_nlink are detected on the inode, return error, to avoid corruption propagation. Signed-off-by: Cheng Lin Reviewed-by: Darrick J. Wong --- fs/xfs/xfs_inode.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 9e62cc500..0fa1ac5e0 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -919,6 +919,13 @@ xfs_droplink( xfs_trans_t *tp, xfs_inode_t *ip) { + if (VFS_I(ip)->i_nlink == 0) { + xfs_alert(ip->i_mount, + "%s: Attempt to drop inode (%llu) with nlink zero.", + __func__, ip->i_ino); + return -EFSCORRUPTED; + } + xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG); drop_nlink(VFS_I(ip));