public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/4] devcoredump: Add dev_coredump_put()
@ 2024-02-28 16:57 José Roberto de Souza
  2024-02-28 16:57 ` [PATCH v2 2/4] devcoredump: Add dev_coredumpm_timeout() José Roberto de Souza
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: José Roberto de Souza @ 2024-02-28 16:57 UTC (permalink / raw)
  To: linux-kernel, intel-xe
  Cc: Rodrigo Vivi, Mukesh Ojha, Johannes Berg, Jonathan Cavitt,
	José Roberto de Souza

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>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/base/devcoredump.c  | 23 +++++++++++++++++++++++
 include/linux/devcoredump.h |  5 +++++
 2 files changed, 28 insertions(+)

diff --git a/drivers/base/devcoredump.c b/drivers/base/devcoredump.c
index 7e2d1f0d903a6..82aeb09b3d1b5 100644
--- a/drivers/base/devcoredump.c
+++ b/drivers/base/devcoredump.c
@@ -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
diff --git a/include/linux/devcoredump.h b/include/linux/devcoredump.h
index c008169ed2c6f..c8f7eb6cc1915 100644
--- a/include/linux/devcoredump.h
+++ b/include/linux/devcoredump.h
@@ -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 */
-- 
2.44.0


^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2024-03-08 15:14 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-28 16:57 [PATCH v2 1/4] devcoredump: Add dev_coredump_put() José Roberto de Souza
2024-02-28 16:57 ` [PATCH v2 2/4] devcoredump: Add dev_coredumpm_timeout() José Roberto de Souza
2024-02-28 17:05   ` Johannes Berg
2024-02-28 17:56     ` Souza, Jose
2024-03-01  8:38       ` Johannes Berg
2024-03-04 14:29         ` Souza, Jose
2024-03-04 23:55           ` Lucas De Marchi
2024-03-05 14:21             ` Souza, Jose
2024-03-05 15:22               ` Lucas De Marchi
2024-03-05 15:38                 ` Souza, Jose
2024-03-08 14:53                   ` Lucas De Marchi
2024-03-08 15:10                     ` Rodrigo Vivi
2024-02-28 16:57 ` [PATCH v2 3/4] drm/xe: Remove devcoredump during driver release José Roberto de Souza
2024-02-28 16:57 ` [PATCH v2 4/4] drm/xe: Increase devcoredump timeout José Roberto de Souza
2024-02-28 17:02 ` [PATCH v2 1/4] devcoredump: Add dev_coredump_put() Cavitt, Jonathan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox