Re: [PATCH v2 1/3] acpi/apei: Add devm_ghes_register_vendor_record_notifier()
Hanjun Guo <[email protected]>
| Newsgroups | dev.linux.lists.acpica-devel,org.kernel.vger.linux-acpi,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Kai-Heng Feng, Sorry, where is [PATCH 2/3]? did I miss something? I reviewed the patch set, seems we don't need another patch? Thanks Hanjun On 2026/3/19 19:13, Kai-Heng Feng wrote: > Add a device-managed wrapper around ghes_register_vendor_record_notifier() > so drivers can avoid manual cleanup on device removal or probe failure. > > Cc: Jonathan Cameron <[email protected]> > Signed-off-by: Kai-Heng Feng <[email protected]> > --- > v2: > - New patch. > > drivers/acpi/apei/ghes.c | 25 +++++++++++++++++++++++++ > include/acpi/ghes.h | 3 +++ > 2 files changed, 28 insertions(+) > > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c > index 8acd2742bb27..d31a70a05538 100644 > --- a/drivers/acpi/apei/ghes.c > +++ b/drivers/acpi/apei/ghes.c > @@ -689,6 +689,31 @@ void ghes_unregister_vendor_record_notifier(struct notifier_block *nb) > } > EXPORT_SYMBOL_GPL(ghes_unregister_vendor_record_notifier); > > +static void ghes_vendor_record_notifier_destroy(void *nb) > +{ > + ghes_unregister_vendor_record_notifier(nb); > +} > + > +/** > + * devm_ghes_register_vendor_record_notifier - device-managed vendor record notifier registration > + * @dev: device that owns the notifier lifetime > + * @nb: pointer to the notifier_block structure of the vendor record handler > + * > + * Return: 0 on success, negative errno on failure. > + */ > +int devm_ghes_register_vendor_record_notifier(struct device *dev, > + struct notifier_block *nb) > +{ > + int ret; > + > + ret = ghes_register_vendor_record_notifier(nb); > + if (ret) > + return ret; > + > + return devm_add_action_or_reset(dev, ghes_vendor_record_notifier_destroy, nb); > +} > +EXPORT_SYMBOL_GPL(devm_ghes_register_vendor_record_notifier); > + > static void ghes_vendor_record_work_func(struct work_struct *work) > { > struct ghes_vendor_record_entry *entry; > diff --git a/include/acpi/ghes.h b/include/acpi/ghes.h > index 7bea522c0657..ca3ace828c1c 100644 > --- a/include/acpi/ghes.h > +++ b/include/acpi/ghes.h > @@ -71,6 +71,9 @@ int ghes_register_vendor_record_notifier(struct notifier_block *nb); > */ > void ghes_unregister_vendor_record_notifier(struct notifier_block *nb); > > +int devm_ghes_register_vendor_record_notifier(struct device *dev, > + struct notifier_block *nb); > + > struct list_head *ghes_get_devices(void); > > void ghes_estatus_pool_region_free(unsigned long addr, u32 size); >