Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp532206pxb; Mon, 25 Oct 2021 13:10:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx1MdQ1i6eWL0/FkW6eQgyDDZ5RBTdnCqPGhqQXWcfkPH4HR+7qIsjwmiU9A7c7Uph4tsxX X-Received: by 2002:a62:4e87:0:b0:47b:dbbf:c6f0 with SMTP id c129-20020a624e87000000b0047bdbbfc6f0mr16360815pfb.47.1635192625334; Mon, 25 Oct 2021 13:10:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635192625; cv=none; d=google.com; s=arc-20160816; b=gtK0SK/anVmpQa5GTzmBdvf59Ex76Wy9qBJ437GZEYkbwZ8gHSuPfnYjjEjvace7Jv Vd80hQKSNOFCWAZ0hUTLaluRkt4WhIqL7rNX2CchNWSLLXkiGm+dl4WUUOPweQzcHkmm NLoum11XKRwlauckRSphAm3nVWGlZNB5mcoGX4/ReaqEOZ45nMG6H6kOvRBN9IHUhWog 2gzd9n2l68+YVy4P0AtI0YYaQ6i75JEI3KNqSP2hA0T/czCJQRwFSoZB6UcOWM8kfpTy zKLD/vZ5h4rQLfIxmAVIALhPlMEDxFtSkmk/A9AJ0CeMzA6mYrrDuFWFpuOMEL2hd6rC B2nA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from; bh=RhttpHdYwDVofH9AAZotz6U1r5mfL+Fw9HocvOAJFoA=; b=oMFNc1YKlcE3Ybeg7eco2/xDUeIkjUiCkDQqlTX91WR705BbffFraVtcCnBIn+nHDQ IAiLf5g2BqHtG5lQpCc8Sz5l9nVIzf3PwF5kZyRh8C7NFCQk7xBL10d0wKyYqDyinfYb mrMdBuNy2RpWTGOLJXgVoA8giFPVKVdOVDwzl0WG5JOaa0p8JZPBWZFH8oF0iv0BUGPO PszFalcN2bkkWcHHCY0rlo+2G8myUDGeYiCSSLf5ymWXGvC2Foker/VYD7XnzijtyQA7 ncy7FF/OHkgsSRv5oGzUJPVnJ1M/TeCB2yHZDz9G3H3vg+HjszoZD79H+o+P8KVie2ap Besg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a5si24894611pgw.365.2021.10.25.13.09.58; Mon, 25 Oct 2021 13:10:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235471AbhJYULv (ORCPT + 99 others); Mon, 25 Oct 2021 16:11:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237091AbhJYULm (ORCPT ); Mon, 25 Oct 2021 16:11:42 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1F44C04A40B; Mon, 25 Oct 2021 12:30:07 -0700 (PDT) Received: from localhost (unknown [IPv6:2804:14c:124:8a08::1002]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: krisman) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id DAF311F41704; Mon, 25 Oct 2021 20:29:11 +0100 (BST) From: Gabriel Krisman Bertazi To: amir73il@gmail.com, jack@suse.com Cc: djwong@kernel.org, tytso@mit.edu, david@fromorbit.com, dhowells@redhat.com, khazhy@google.com, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, linux-ext4@vger.kernel.org, Gabriel Krisman Bertazi , kernel@collabora.com Subject: [PATCH v9 11/31] fsnotify: Protect fsnotify_handle_inode_event from no-inode events Date: Mon, 25 Oct 2021 16:27:26 -0300 Message-Id: <20211025192746.66445-12-krisman@collabora.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211025192746.66445-1-krisman@collabora.com> References: <20211025192746.66445-1-krisman@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org FAN_FS_ERROR allows events without inodes - i.e. for file system-wide errors. Even though fsnotify_handle_inode_event is not currently used by fanotify, this patch protects other backends from cases where neither inode or dir are provided. Also document the constraints of the interface (inode and dir cannot be both NULL). Suggested-by: Amir Goldstein Signed-off-by: Gabriel Krisman Bertazi --- Changes since v8: - Convert verifications to WARN_ON - Require either inode or dir - Protect nfsd backend from !inode. --- fs/nfsd/filecache.c | 3 +++ fs/notify/fsnotify.c | 3 +++ include/linux/fsnotify_backend.h | 1 + 3 files changed, 7 insertions(+) diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c index be3c1aad50ea..fdf89fcf1a0c 100644 --- a/fs/nfsd/filecache.c +++ b/fs/nfsd/filecache.c @@ -602,6 +602,9 @@ nfsd_file_fsnotify_handle_event(struct fsnotify_mark *mark, u32 mask, struct inode *inode, struct inode *dir, const struct qstr *name, u32 cookie) { + if (WARN_ON_ONCE(!inode)) + return 0; + trace_nfsd_file_fsnotify_handle_event(inode, mask); /* Should be no marks on non-regular files */ diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c index fde3a1115a17..4034ca566f95 100644 --- a/fs/notify/fsnotify.c +++ b/fs/notify/fsnotify.c @@ -252,6 +252,9 @@ static int fsnotify_handle_inode_event(struct fsnotify_group *group, if (WARN_ON_ONCE(!ops->handle_inode_event)) return 0; + if (WARN_ON_ONCE(!inode && !dir)) + return 0; + if ((inode_mark->mask & FS_EXCL_UNLINK) && path && d_unlinked(path->dentry)) return 0; diff --git a/include/linux/fsnotify_backend.h b/include/linux/fsnotify_backend.h index 035438fe4a43..b71dc788018e 100644 --- a/include/linux/fsnotify_backend.h +++ b/include/linux/fsnotify_backend.h @@ -136,6 +136,7 @@ struct mem_cgroup; * @dir: optional directory associated with event - * if @file_name is not NULL, this is the directory that * @file_name is relative to. + * Either @inode or @dir must be non-NULL. * @file_name: optional file name associated with event * @cookie: inotify rename cookie * -- 2.33.0