Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4153824pxj; Tue, 15 Jun 2021 16:59:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzZjcizpcWW0NIwfBhKvBle0wF/E0mvi1Tv8LfbTw64iQVSsr9dTmIZVL6oTadcp5pA+l3o X-Received: by 2002:a92:c041:: with SMTP id o1mr1477280ilf.117.1623801553434; Tue, 15 Jun 2021 16:59:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623801553; cv=none; d=google.com; s=arc-20160816; b=y38ACSoCfjb5whz0bhsoJyViEL/ByfbjzGDvBdezKiNAOm+QUqfIJFkwoYV3ERk+jz bfZGAZzsPmNWSTJ20WJWPgukQLJHm3GsHhyvzG0M3muR5lw8km8HgwRkdQ/lS/Vlwo1d U6+dZog0IzwLShT6f3ZJB1Nlq5NTcypOUnm2BNzxwhiyr+1rxCEfOJ/pvgNUvNnrs7Ro 1YnLWwN2a00CWgA2Poj6VmzVMjF1Z5Zy5IYhXeaILENTY7DDpyEn/Wx9M9qsNV03v+mT somP64Yheg7acP7Kg09YQn8sbM6macmEBn4p9i8vtBcKidRMo1BwB0UaP75vFJjzBu06 F6DA== 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=dpfT0neGd7Ws3fmb7yUoTWpYuxrp1aoAncVD/AS2Acw=; b=VHBiCnueQQ807uT3+geSzx5Ju5qbuXcRtnw46+4qq/89bjpgyEwhSxHxr6c3+V5w7A DKl7x9MsNEbLuwI4iyzfi4KAcEzGl2RGz5EfnCVXCW7ElxLkCaPRYNXwfp/f0Wfs8MUL pXaN0lFmO9m2+7XVtBj0ay8nuOsvLwGS5lesVmHQNQAMA/Yfs7eGTFZp2qYia3fHmv0p HgBdMHhTySz8Q3eZmU/EuucwKLxCVzKHpQs1Nq7qvksPI1FbjYKHd0KmA2oS+P2YPyyX A0z57LjGAyCrqfaykY8z5ex6kTCXLsPjf6TV7eaS5d/QH+/0oWnp4Nx8ru3H1RERR7OH 9UHQ== 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 i9si352748ila.58.2021.06.15.16.59.01; Tue, 15 Jun 2021 16:59:13 -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 S230331AbhFOX6S (ORCPT + 99 others); Tue, 15 Jun 2021 19:58:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229811AbhFOX6R (ORCPT ); Tue, 15 Jun 2021 19:58:17 -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 C5224C061574; Tue, 15 Jun 2021 16:56:12 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: krisman) with ESMTPSA id 472761F432DC From: Gabriel Krisman Bertazi To: amir73il@gmail.com Cc: kernel@collabora.com, 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 Subject: [PATCH v2 02/14] fanotify: Fold event size calculation to its own function Date: Tue, 15 Jun 2021 19:55:44 -0400 Message-Id: <20210615235556.970928-3-krisman@collabora.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20210615235556.970928-1-krisman@collabora.com> References: <20210615235556.970928-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 be5b6d2c01e7..0da4e5dcab0f 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.31.0