aboutsummaryrefslogtreecommitdiffstats
path: root/0001-driver-core-add-printk-debugging.patch
blob: 39d3ccdc04ba6b35f97d7d6dbd59c00e2e1add6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
From 1c7672d60f8deea4f2310b44a9641f505882a0da Mon Sep 17 00:00:00 2001
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: Tue, 16 May 2023 16:11:57 +0200
Subject: [PATCH] driver core: add printk debugging

Helps when trying to find leaks
---
 drivers/base/bus.c          |    2 ++
 drivers/base/class.c        |    3 +++
 drivers/base/core.c         |    3 +++
 drivers/usb/core/endpoint.c |    1 +
 4 files changed, 9 insertions(+)

--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -208,6 +208,7 @@ static void bus_release(struct kobject *
 	struct subsys_private *priv = to_subsys_private(kobj);
 
 	lockdep_unregister_key(&priv->lock_key);
+	pr_debug("bus: '%s': %s\n", kobject_name(kobj), __func__);
 	kfree(priv);
 }
 
@@ -1191,6 +1192,7 @@ EXPORT_SYMBOL_GPL(subsys_interface_unreg
 
 static void system_root_device_release(struct device *dev)
 {
+	pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
 	kfree(dev);
 }
 
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -8,6 +8,8 @@
  * Copyright (c) 2003-2004 IBM Corp.
  */
 
+#define DEBUG
+
 #include <linux/device/class.h>
 #include <linux/device.h>
 #include <linux/module.h>
@@ -573,6 +575,7 @@ EXPORT_SYMBOL_GPL(class_compat_register)
  */
 void class_compat_unregister(struct class_compat *cls)
 {
+	pr_debug("class_compat: '%s': %s\n", kobject_name(cls->kobj), __func__);
 	kobject_put(cls->kobj);
 	kfree(cls);
 }
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -3852,6 +3852,7 @@ EXPORT_SYMBOL_GPL(device_del);
 void device_unregister(struct device *dev)
 {
 	pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
+	printk(KERN_ERR "GKH: device: '%s': %s\n", dev_name(dev), __func__);
 	device_del(dev);
 	put_device(dev);
 }
@@ -4276,6 +4277,7 @@ EXPORT_SYMBOL_GPL(root_device_unregister
 static void device_create_release(struct device *dev)
 {
 	pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
+	printk(KERN_ERR "GKH: device: '%s': %s\n", dev_name(dev), __func__);
 	kfree(dev);
 }
 
@@ -4410,6 +4412,7 @@ void device_destroy(const struct class *
 
 	dev = class_find_device_by_devt(class, devt);
 	if (dev) {
+		printk(KERN_ERR "GKH: device: '%s': %s\n", dev_name(dev), __func__);
 		put_device(dev);
 		device_unregister(dev);
 	}
--- a/drivers/usb/core/endpoint.c
+++ b/drivers/usb/core/endpoint.c
@@ -138,6 +138,7 @@ static void ep_device_release(struct dev
 {
 	struct ep_device *ep_dev = to_ep_device(dev);
 
+	printk(KERN_ERR "GKH: device: '%s': %s\n", dev_name(dev), __func__);
 	kfree(ep_dev);
 }