diff options
Diffstat (limited to 'drivers/of')
-rw-r--r-- | drivers/of/fdt.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 1bbe3a990ef1..655f79db7899 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/initrd.h> | 14 | #include <linux/initrd.h> |
15 | #include <linux/memblock.h> | 15 | #include <linux/memblock.h> |
16 | #include <linux/mutex.h> | ||
16 | #include <linux/of.h> | 17 | #include <linux/of.h> |
17 | #include <linux/of_fdt.h> | 18 | #include <linux/of_fdt.h> |
18 | #include <linux/of_reserved_mem.h> | 19 | #include <linux/of_reserved_mem.h> |
@@ -436,6 +437,8 @@ static void *kernel_tree_alloc(u64 size, u64 align) | |||
436 | return kzalloc(size, GFP_KERNEL); | 437 | return kzalloc(size, GFP_KERNEL); |
437 | } | 438 | } |
438 | 439 | ||
440 | static DEFINE_MUTEX(of_fdt_unflatten_mutex); | ||
441 | |||
439 | /** | 442 | /** |
440 | * of_fdt_unflatten_tree - create tree of device_nodes from flat blob | 443 | * of_fdt_unflatten_tree - create tree of device_nodes from flat blob |
441 | * | 444 | * |
@@ -447,7 +450,9 @@ static void *kernel_tree_alloc(u64 size, u64 align) | |||
447 | void of_fdt_unflatten_tree(const unsigned long *blob, | 450 | void of_fdt_unflatten_tree(const unsigned long *blob, |
448 | struct device_node **mynodes) | 451 | struct device_node **mynodes) |
449 | { | 452 | { |
453 | mutex_lock(&of_fdt_unflatten_mutex); | ||
450 | __unflatten_device_tree(blob, mynodes, &kernel_tree_alloc); | 454 | __unflatten_device_tree(blob, mynodes, &kernel_tree_alloc); |
455 | mutex_unlock(&of_fdt_unflatten_mutex); | ||
451 | } | 456 | } |
452 | EXPORT_SYMBOL_GPL(of_fdt_unflatten_tree); | 457 | EXPORT_SYMBOL_GPL(of_fdt_unflatten_tree); |
453 | 458 | ||