mfd: abx500-core: Fix compiler warning larger stack frame
authorJay Aurabind <mail@aurabindo.in>
Wed, 21 May 2014 17:19:54 +0000 (22:49 +0530)
committerLee Jones <lee.jones@linaro.org>
Tue, 3 Jun 2014 07:11:11 +0000 (08:11 +0100)
On systems with CONFIG_FRAME_WARN=1024, compiler warns the allocation of
an object of struct device on stack. Make the allocation dynamically to
fix the warning. Also change the caller's return type to int so as to
account for error handling.

drivers/mfd/abx500-core.c: In function ‘abx500_dump_all_banks’:
drivers/mfd/abx500-core.c:167:1: warning: the frame size of 1032 bytes
is larger than 1024 bytes [-Wframe-larger-than=]

Signed-off-by: Aurabindo J <mail@aurabindo.in>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/abx500-core.c
include/linux/mfd/abx500.h

index f3a15aa54d7bc0e9979996fab67f33d9696b1563..d6d0ec4d21e416b5d628dc5b35bb35743d590890 100644 (file)
@@ -151,19 +151,23 @@ int abx500_startup_irq_enabled(struct device *dev, unsigned int irq)
 }
 EXPORT_SYMBOL(abx500_startup_irq_enabled);
 
-void abx500_dump_all_banks(void)
+int abx500_dump_all_banks(void)
 {
        struct abx500_ops *ops;
-       struct device dummy_child = {NULL};
+       struct device *dummy_child;
        struct abx500_device_entry *dev_entry;
 
+       dummy_child = kzalloc(sizeof(struct device), GFP_KERNEL);
+       if (!dummy_child)
+               return -ENOMEM;
        list_for_each_entry(dev_entry, &abx500_list, list) {
-               dummy_child.parent = dev_entry->dev;
+               dummy_child->parent = dev_entry->dev;
                ops = &dev_entry->ops;
 
                if ((ops != NULL) && (ops->dump_all_banks != NULL))
-                       ops->dump_all_banks(&dummy_child);
+                       ops->dump_all_banks(dummy_child);
        }
+       kfree(dummy_child);
 }
 EXPORT_SYMBOL(abx500_dump_all_banks);
 
index 3301b2031c8d03b5900bf9364901a76763585bb7..df2508f7f3d2f4a071633b283830174037c8752e 100644 (file)
@@ -330,7 +330,7 @@ int abx500_mask_and_set_register_interruptible(struct device *dev, u8 bank,
 int abx500_get_chip_id(struct device *dev);
 int abx500_event_registers_startup_state_get(struct device *dev, u8 *event);
 int abx500_startup_irq_enabled(struct device *dev, unsigned int irq);
-void abx500_dump_all_banks(void);
+int abx500_dump_all_banks(void);
 
 struct abx500_ops {
        int (*get_chip_id) (struct device *);
This page took 0.026784 seconds and 5 git commands to generate.