--- a/fs/notify/dnotify/dnotify.c +++ b/fs/notify/dnotify/dnotify.c @@ -138,9 +138,21 @@ static void dnotify_free_mark(struct fsn kmem_cache_free(dnotify_mark_cache, dn_mark); } +static void dnotify_freeing_mark(struct fsnotify_mark *fsn_mark, struct fsnotify_group *group) +{ + struct dnotify_mark *dn_mark = container_of(fsn_mark, + struct dnotify_mark, + fsn_mark); + if (dn_mark->dn) { + kmem_cache_free(dnotify_struct_cache, dn_mark->dn); + dn_mark->dn = NULL; + } +} + static const struct fsnotify_ops dnotify_fsnotify_ops = { .handle_inode_event = dnotify_handle_event, .free_mark = dnotify_free_mark, + .freeing_mark = dnotify_freeing_mark, }; /*