fsnotify: Pass group argument to free_event
[ Upstream commit 330ae77d2a5b0af32c0f29e139bf28ec8591de59 ] For group-wide mempool backed events, like FS_ERROR, the free_event callback will need to reference the group's mempool to free the memory. Wire that argument into the current callers. Link: https://lore.kernel.org/r/20211025192746.66445-13-krisman@collabora.com Reviewed-by: Jan Kara <jack@suse.cz> Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com> Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
6554de7632
commit
391f3d77ed
5 changed files with 7 additions and 5 deletions
|
@ -835,7 +835,8 @@ static void fanotify_free_name_event(struct fanotify_event *event)
|
|||
kfree(FANOTIFY_NE(event));
|
||||
}
|
||||
|
||||
static void fanotify_free_event(struct fsnotify_event *fsn_event)
|
||||
static void fanotify_free_event(struct fsnotify_group *group,
|
||||
struct fsnotify_event *fsn_event)
|
||||
{
|
||||
struct fanotify_event *event;
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ void fsnotify_destroy_group(struct fsnotify_group *group)
|
|||
* that deliberately ignores overflow events.
|
||||
*/
|
||||
if (group->overflow_event)
|
||||
group->ops->free_event(group->overflow_event);
|
||||
group->ops->free_event(group, group->overflow_event);
|
||||
|
||||
fsnotify_put_group(group);
|
||||
}
|
||||
|
|
|
@ -184,7 +184,8 @@ static void inotify_free_group_priv(struct fsnotify_group *group)
|
|||
dec_inotify_instances(group->inotify_data.ucounts);
|
||||
}
|
||||
|
||||
static void inotify_free_event(struct fsnotify_event *fsn_event)
|
||||
static void inotify_free_event(struct fsnotify_group *group,
|
||||
struct fsnotify_event *fsn_event)
|
||||
{
|
||||
kfree(INOTIFY_E(fsn_event));
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ void fsnotify_destroy_event(struct fsnotify_group *group,
|
|||
WARN_ON(!list_empty(&event->list));
|
||||
spin_unlock(&group->notification_lock);
|
||||
}
|
||||
group->ops->free_event(event);
|
||||
group->ops->free_event(group, event);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -156,7 +156,7 @@ struct fsnotify_ops {
|
|||
const struct qstr *file_name, u32 cookie);
|
||||
void (*free_group_priv)(struct fsnotify_group *group);
|
||||
void (*freeing_mark)(struct fsnotify_mark *mark, struct fsnotify_group *group);
|
||||
void (*free_event)(struct fsnotify_event *event);
|
||||
void (*free_event)(struct fsnotify_group *group, struct fsnotify_event *event);
|
||||
/* called on final put+free to free memory */
|
||||
void (*free_mark)(struct fsnotify_mark *mark);
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue