mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
fsnotify: Pass group argument to free_event
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>
This commit is contained in:
parent
24dca90590
commit
330ae77d2a
@ -835,7 +835,8 @@ static void fanotify_free_name_event(struct fanotify_event *event)
|
|||||||
kfree(FANOTIFY_NE(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;
|
struct fanotify_event *event;
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ void fsnotify_destroy_group(struct fsnotify_group *group)
|
|||||||
* that deliberately ignores overflow events.
|
* that deliberately ignores overflow events.
|
||||||
*/
|
*/
|
||||||
if (group->overflow_event)
|
if (group->overflow_event)
|
||||||
group->ops->free_event(group->overflow_event);
|
group->ops->free_event(group, group->overflow_event);
|
||||||
|
|
||||||
fsnotify_put_group(group);
|
fsnotify_put_group(group);
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,8 @@ static void inotify_free_group_priv(struct fsnotify_group *group)
|
|||||||
dec_inotify_instances(group->inotify_data.ucounts);
|
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));
|
kfree(INOTIFY_E(fsn_event));
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ void fsnotify_destroy_event(struct fsnotify_group *group,
|
|||||||
WARN_ON(!list_empty(&event->list));
|
WARN_ON(!list_empty(&event->list));
|
||||||
spin_unlock(&group->notification_lock);
|
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);
|
const struct qstr *file_name, u32 cookie);
|
||||||
void (*free_group_priv)(struct fsnotify_group *group);
|
void (*free_group_priv)(struct fsnotify_group *group);
|
||||||
void (*freeing_mark)(struct fsnotify_mark *mark, 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 */
|
/* called on final put+free to free memory */
|
||||||
void (*free_mark)(struct fsnotify_mark *mark);
|
void (*free_mark)(struct fsnotify_mark *mark);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user