hypervisor_init() in drivers/base/hypervisor.c creates hypervisor_kobj with kobject_create_and_add() (which allocates a dynamic kobject using dynamic_kobj_ktype), and hypervisor_subsys_init() in drivers/xen/sys-hypervisor.c then overwrites hypervisor_kobj->ktype with &hyp_sysfs_kobj_type, which had no .release callback. Add hyp_sysfs_release() calling kfree(kobj) to preserve the dynamic kobject release behavior. Fixes: cff7e81b3dd7 ("xen: add /sys/hypervisor support") Signed-off-by: Ian Rogers --- drivers/xen/sys-hypervisor.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c index 91923242a5ae..0e8a2cd69fd6 100644 --- a/drivers/xen/sys-hypervisor.c +++ b/drivers/xen/sys-hypervisor.c @@ -659,7 +659,13 @@ static const struct sysfs_ops hyp_sysfs_ops = { .store = hyp_sysfs_store, }; +static void hyp_sysfs_release(struct kobject *kobj) +{ + kfree(kobj); +} + static const struct kobj_type hyp_sysfs_kobj_type = { + .release = hyp_sysfs_release, .sysfs_ops = &hyp_sysfs_ops, }; -- 2.56.0.313.g2479322e68-goog