diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2007-06-19 02:08:00 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-07-10 07:53:47 -0400 |
commit | 6a281856c02d2291df2f7d9df5bfdee2e7bdd747 (patch) | |
tree | f9dee0818d797edef6fdb59ddeb069883a7b191c /include/asm-powerpc/prom.h | |
parent | d3b814bb1e8b0c63449a3430196c20cbe24a3e67 (diff) |
[POWERPC] Add a warning to help trackdown device_node refcounting bugs
When the refcount for a device node goes to 0, we call the
destructor - of_node_release(). This should only happen if we've
already detached the node from the device tree.
So add a flag OF_DETACHED which tracks detached-ness, and if we
find ourselves in of_node_release() without it set, issue a
warning and don't free the device_node. To avoid warning
continuously reinitialise the kref to a sane value.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-powerpc/prom.h')
-rw-r--r-- | include/asm-powerpc/prom.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/asm-powerpc/prom.h b/include/asm-powerpc/prom.h index f1006b91bd1a..1632baa17dc6 100644 --- a/include/asm-powerpc/prom.h +++ b/include/asm-powerpc/prom.h | |||
@@ -99,6 +99,7 @@ extern struct device_node *of_chosen; | |||
99 | 99 | ||
100 | /* flag descriptions */ | 100 | /* flag descriptions */ |
101 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ | 101 | #define OF_DYNAMIC 1 /* node and properties were allocated via kmalloc */ |
102 | #define OF_DETACHED 2 /* node has been detached from the device tree */ | ||
102 | 103 | ||
103 | static inline int of_node_check_flag(struct device_node *n, unsigned long flag) | 104 | static inline int of_node_check_flag(struct device_node *n, unsigned long flag) |
104 | { | 105 | { |