On Thu, May 08, 2014 at 02:38:24PM +0200, Martin Kepplinger wrote:
Am 2014-05-07 18:36, schrieb Jay Aurabind:
Hello list, Time for a noob discussion,
When I was building the kernel, I found a warning from drivers/mfd/abx500-core.c, that the Frame size is larger than 1024 bytes. Apparently the stack frame size can be changed from the config, but my question is, whether 1024 bytes low ? I am on an x86_64 (core i3).
abx500-core.c had an object of struct device being allocated on stack. So dynamically allocating it makes the warning go away. Are there any implications on using dynamic allocation on this particular code? I mean, could there be some reason why the original developer went with static option ?
kmalloc may sleep and is therefore sometimes not recommended to be used.
Sure, but this code doesnt appear to be holding any locks. So it should be okay to call kmalloc here I guess.
--- drivers/mfd/abx500-core.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/mfd/abx500-core.c b/drivers/mfd/abx500-core.c index f3a15aa..709a84f 100644 --- a/drivers/mfd/abx500-core.c +++ b/drivers/mfd/abx500-core.c @@ -154,15 +154,17 @@ EXPORT_SYMBOL(abx500_startup_irq_enabled); void 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); + 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); } } EXPORT_SYMBOL(abx500_dump_all_banks);
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies