mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-04 04:02:26 +00:00
devcoredump: Add dev_coredump_put()
It is useful for modules that do not want to keep coredump available after its unload. Otherwise, the coredump would only be removed after DEVCD_TIMEOUT seconds. v2: - dev_coredump_put() documentation updated (Mukesh) Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Mukesh Ojha <quic_mojha@quicinc.com> Cc: Johannes Berg <johannes@sipsolutions.net> Cc: Jonathan Cavitt <jonathan.cavitt@intel.com> Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: Jonathan Cavitt <jonathan.cavitt@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240409200206.108452-1-jose.souza@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
ac321eb46e
commit
a28380f119
@ -304,6 +304,29 @@ static ssize_t devcd_read_from_sgtable(char *buffer, loff_t offset,
|
||||
offset);
|
||||
}
|
||||
|
||||
/**
|
||||
* dev_coredump_put - remove device coredump
|
||||
* @dev: the struct device for the crashed device
|
||||
*
|
||||
* dev_coredump_put() removes coredump, if exists, for a given device from
|
||||
* the file system and free its associated data otherwise, does nothing.
|
||||
*
|
||||
* It is useful for modules that do not want to keep coredump
|
||||
* available after its unload.
|
||||
*/
|
||||
void dev_coredump_put(struct device *dev)
|
||||
{
|
||||
struct device *existing;
|
||||
|
||||
existing = class_find_device(&devcd_class, NULL, dev,
|
||||
devcd_match_failing);
|
||||
if (existing) {
|
||||
devcd_free(existing, NULL);
|
||||
put_device(existing);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dev_coredump_put);
|
||||
|
||||
/**
|
||||
* dev_coredumpm - create device coredump with read/free methods
|
||||
* @dev: the struct device for the crashed device
|
||||
|
@ -63,6 +63,8 @@ void dev_coredumpm(struct device *dev, struct module *owner,
|
||||
|
||||
void dev_coredumpsg(struct device *dev, struct scatterlist *table,
|
||||
size_t datalen, gfp_t gfp);
|
||||
|
||||
void dev_coredump_put(struct device *dev);
|
||||
#else
|
||||
static inline void dev_coredumpv(struct device *dev, void *data,
|
||||
size_t datalen, gfp_t gfp)
|
||||
@ -85,6 +87,9 @@ static inline void dev_coredumpsg(struct device *dev, struct scatterlist *table,
|
||||
{
|
||||
_devcd_free_sgtable(table);
|
||||
}
|
||||
static inline void dev_coredump_put(struct device *dev)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_DEV_COREDUMP */
|
||||
|
||||
#endif /* __DEVCOREDUMP_H */
|
||||
|
Loading…
Reference in New Issue
Block a user