diff --git a/[refs] b/[refs] index ff4f964db957..4408201e0b14 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2287c322b61fced7e0c326a1a9606aa73147e3df +refs/heads/master: 8b0c250be489dcbf1a3a33bb4ec4c7f33735a365 diff --git a/trunk/include/linux/klist.h b/trunk/include/linux/klist.h index fb52f9d9d611..eebf5e5696ec 100644 --- a/trunk/include/linux/klist.h +++ b/trunk/include/linux/klist.h @@ -37,6 +37,8 @@ extern void klist_add_head(struct klist * k, struct klist_node * n); extern void klist_del(struct klist_node * n); extern void klist_remove(struct klist_node * n); +extern int klist_node_attached(struct klist_node * n); + struct klist_iter { struct klist * i_klist; diff --git a/trunk/lib/klist.c b/trunk/lib/klist.c index 6f760424648b..02177d72dc89 100644 --- a/trunk/lib/klist.c +++ b/trunk/lib/klist.c @@ -112,6 +112,7 @@ static void klist_release(struct kref * kref) struct klist_node * n = container_of(kref, struct klist_node, n_ref); list_del(&n->n_node); complete(&n->n_removed); + n->n_klist = NULL; } static int klist_dec_and_del(struct klist_node * n) @@ -153,6 +154,19 @@ void klist_remove(struct klist_node * n) EXPORT_SYMBOL_GPL(klist_remove); +/** + * klist_node_attached - Say whether a node is bound to a list or not. + * @n: Node that we're testing. + */ + +int klist_node_attached(struct klist_node * n) +{ + return (n->n_klist != NULL); +} + +EXPORT_SYMBOL_GPL(klist_node_attached); + + /** * klist_iter_init_node - Initialize a klist_iter structure. * @k: klist we're iterating. @@ -246,3 +260,5 @@ struct klist_node * klist_next(struct klist_iter * i) } EXPORT_SYMBOL_GPL(klist_next); + +