Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4656454pxv; Tue, 29 Jun 2021 12:14:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyYZYXg53qgXw9k5b42UXwDjxfzcx68GAsIoMeZQmWj7NVI2/XIn52hjCSmDWEGkWpr79bT X-Received: by 2002:a05:6402:2805:: with SMTP id h5mr41291879ede.255.1624994081900; Tue, 29 Jun 2021 12:14:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624994081; cv=none; d=google.com; s=arc-20160816; b=BeXBPyCjJZECCUUju1SmKKuhqkQZzwk2KKSeJXDMvdpDD5D06GAbaF5flYEgPPcJ7H u27er63q9cjgN4m9MrXJ0xxZ1w5McYuZ85Sso1NBnTMTy+AMY3zjEgtVl/kOxKSz7zvC hnjypf9He1nvuOsep3iNlBp+gHsENEd4bmJhZMBYV/R0vrnhV6lB9OR3ixFtACNcDgRG oILzi75iy54lH7N9F1ADkAItxlj1FMGJGtbttpcR/ZgSVXUQez0dlauT7dIWQM31+CrB ORiQsboDbPLO7FnVBQGek53BKlCfD5Mpdc8rk3iLvUG4bTy2tyyeP8AjP++lLSQy1iHz CwXQ== 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=9ETZIp2MAD6LBIyK41KBpxXJFawlVnaggr0RFfq5TwU=; b=GO9d2wuB3RjEnjwKe6NZW4UdmQx6zbP8kO/j5DNBduCjQ/spNmbZhP8w0dD27Zv46D jBbYBturFyN4T5iLXWJ91cVUmwFQODVgFVm2QJZdFhdeLTC6VCRJ5LmJqRNtvblbPHYy QxhA3yZbar43DY92RXJLuJjmmgBXrix7WEEO+A9XnzS8VzReFk20zbXDc9MP210aTTgv FH58IP12Fx+kPQUUC3oaWVmnkvPHMiq+DYHWsRu4i3zjUNr8uLMsZ+dXTlFx5SgzzLLi x8AgW3Cq3nEgcSHcjllUW7LthlPOkgC+qxYwbb7ypOOJoCetCh/ym80gcao7Dh2dxs3n iVKw== 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 jz5si19780856ejb.22.2021.06.29.12.14.18; Tue, 29 Jun 2021 12:14:41 -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 S235465AbhF2TO3 (ORCPT + 99 others); Tue, 29 Jun 2021 15:14:29 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:34814 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234228AbhF2TO3 (ORCPT ); Tue, 29 Jun 2021 15:14:29 -0400 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: krisman) with ESMTPSA id A72DF1F431AF From: Gabriel Krisman Bertazi To: amir73il@gmail.com Cc: djwong@kernel.org, tytso@mit.edu, david@fromorbit.com, jack@suse.com, dhowells@redhat.com, khazhy@google.com, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, Gabriel Krisman Bertazi , kernel@collabora.com Subject: [PATCH v3 02/15] fanotify: Fold event size calculation to its own function Date: Tue, 29 Jun 2021 15:10:22 -0400 Message-Id: <20210629191035.681913-3-krisman@collabora.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210629191035.681913-1-krisman@collabora.com> References: <20210629191035.681913-1-krisman@collabora.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Every time this function is invoked, it is immediately added to FAN_EVENT_METADATA_LEN, since there is no need to just calculate the length of info records. This minor clean up folds the rest of the calculation into the function, which now operates in terms of events, returning the size of the entire event, including metadata. Reviewed-by: Amir Goldstein Signed-off-by: Gabriel Krisman Bertazi --- Changes since v1: - rebased on top of hashing patches --- fs/notify/fanotify/fanotify_user.c | 33 +++++++++++++++++------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c index 64864fb40b40..68a53d3534f8 100644 --- a/fs/notify/fanotify/fanotify_user.c +++ b/fs/notify/fanotify/fanotify_user.c @@ -117,17 +117,24 @@ static int fanotify_fid_info_len(int fh_len, int name_len) return roundup(FANOTIFY_INFO_HDR_LEN + info_len, FANOTIFY_EVENT_ALIGN); } -static int fanotify_event_info_len(unsigned int fid_mode, - struct fanotify_event *event) +static size_t fanotify_event_len(struct fanotify_event *event, + unsigned int fid_mode) { - struct fanotify_info *info = fanotify_event_info(event); - int dir_fh_len = fanotify_event_dir_fh_len(event); - int fh_len = fanotify_event_object_fh_len(event); - int info_len = 0; + size_t event_len = FAN_EVENT_METADATA_LEN; + struct fanotify_info *info; + int dir_fh_len; + int fh_len; int dot_len = 0; + if (!fid_mode) + return event_len; + + info = fanotify_event_info(event); + dir_fh_len = fanotify_event_dir_fh_len(event); + fh_len = fanotify_event_object_fh_len(event); + if (dir_fh_len) { - info_len += fanotify_fid_info_len(dir_fh_len, info->name_len); + event_len += fanotify_fid_info_len(dir_fh_len, info->name_len); } else if ((fid_mode & FAN_REPORT_NAME) && (event->mask & FAN_ONDIR)) { /* * With group flag FAN_REPORT_NAME, if name was not recorded in @@ -137,9 +144,9 @@ static int fanotify_event_info_len(unsigned int fid_mode, } if (fh_len) - info_len += fanotify_fid_info_len(fh_len, dot_len); + event_len += fanotify_fid_info_len(fh_len, dot_len); - return info_len; + return event_len; } /* @@ -168,7 +175,7 @@ static void fanotify_unhash_event(struct fsnotify_group *group, static struct fanotify_event *get_one_event(struct fsnotify_group *group, size_t count) { - size_t event_size = FAN_EVENT_METADATA_LEN; + size_t event_size; struct fanotify_event *event = NULL; struct fsnotify_event *fsn_event; unsigned int fid_mode = FAN_GROUP_FLAG(group, FANOTIFY_FID_BITS); @@ -181,8 +188,7 @@ static struct fanotify_event *get_one_event(struct fsnotify_group *group, goto out; event = FANOTIFY_E(fsn_event); - if (fid_mode) - event_size += fanotify_event_info_len(fid_mode, event); + event_size = fanotify_event_len(event, fid_mode); if (event_size > count) { event = ERR_PTR(-EINVAL); @@ -412,8 +418,7 @@ static ssize_t copy_event_to_user(struct fsnotify_group *group, pr_debug("%s: group=%p event=%p\n", __func__, group, event); - metadata.event_len = FAN_EVENT_METADATA_LEN + - fanotify_event_info_len(fid_mode, event); + metadata.event_len = fanotify_event_len(event, fid_mode); metadata.metadata_len = FAN_EVENT_METADATA_LEN; metadata.vers = FANOTIFY_METADATA_VERSION; metadata.reserved = 0; -- 2.32.0