Hello, On Fri, Nov 11, 2022 at 10:35:22AM -0800, Kristen Carlson Accardi wrote: > +/** > + * register_misc_cg_notifier() - Register for css callback events > + * @nb: notifier_block to register > + * > + * Context: Any context. > + */ > +int register_misc_cg_notifier(struct notifier_block *nb) > +{ > + return blocking_notifier_chain_register(&misc_cg_notify_list, nb); > +} > +EXPORT_SYMBOL_GPL(register_misc_cg_notifier); > + > +/** > + * unregister_misc_cg_notifier() - unregister for css callback events > + * @nb: notifier_block to unregister > + * > + * Context: Any context. > + */ > +int unregister_misc_cg_notifier(struct notifier_block *nb) > +{ > + return blocking_notifier_chain_unregister(&misc_cg_notify_list, nb); > +} > +EXPORT_SYMBOL_GPL(unregister_misc_cg_notifier); So, I'm not necessarily against this but wonder whether it'd be more straightforward to add sth like struct misc_res_ops which contains the optional callbacks and then have an array of pointers to the structs which are initialized / registered somehow. What do you think? Thanks. -- tejun