You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
driver core: check start node in klist_iter_init_node
klist_iter_init_node() takes a node as a start argument. However, this node might not be valid anymore. This patch updates the klist_iter_init_node() and dependent functions to return an error if so. All calling functions have been audited to check for a return code here. Signed-off-by: Hannes Reinecke <hare@suse.de> Cc: Greg Kroah-Hartmann <gregkh@linuxfoundation.org> Cc: Kay Sievers <kay@vrfy.org> Cc: Stable Kernel <stable@kernel.org> Cc: Linux Kernel <linux-kernel@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
97ec448aea
commit
a15d49fd30
+10
-4
@@ -278,13 +278,19 @@ EXPORT_SYMBOL_GPL(klist_node_attached);
|
||||
* Similar to klist_iter_init(), but starts the action off with @n,
|
||||
* instead of with the list head.
|
||||
*/
|
||||
void klist_iter_init_node(struct klist *k, struct klist_iter *i,
|
||||
struct klist_node *n)
|
||||
int klist_iter_init_node(struct klist *k, struct klist_iter *i,
|
||||
struct klist_node *n)
|
||||
{
|
||||
if (n) {
|
||||
kref_get(&n->n_ref);
|
||||
if (!n->n_klist) {
|
||||
kref_put(&n->n_ref);
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
i->i_klist = k;
|
||||
i->i_cur = n;
|
||||
if (n)
|
||||
kref_get(&n->n_ref);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(klist_iter_init_node);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user