Commit c18cf6d1 authored by Lee Jones's avatar Lee Jones Committed by Samuel Ortiz
Browse files

mfd: ab8500-debug: Convert to managed resources for allocating memory

parent 5feac05d
Loading
Loading
Loading
Loading
+12 −22
Original line number Diff line number Diff line
@@ -2937,7 +2937,6 @@ static struct dentry *ab8500_gpadc_dir;
static int ab8500_debug_probe(struct platform_device *plf)
{
	struct dentry *file;
	int ret = -ENOMEM;
	struct ab8500 *ab8500;
	struct resource *res;
	debug_bank = AB8500_MISC;
@@ -2946,24 +2945,26 @@ static int ab8500_debug_probe(struct platform_device *plf)
	ab8500 = dev_get_drvdata(plf->dev.parent);
	num_irqs = ab8500->mask_size;

	irq_count = kzalloc(sizeof(*irq_count)*num_irqs, GFP_KERNEL);
	irq_count = devm_kzalloc(&plf->dev,
				 sizeof(*irq_count)*num_irqs, GFP_KERNEL);
	if (!irq_count)
		return -ENOMEM;

	dev_attr = kzalloc(sizeof(*dev_attr)*num_irqs,GFP_KERNEL);
	dev_attr = devm_kzalloc(&plf->dev,
				sizeof(*dev_attr)*num_irqs,GFP_KERNEL);
	if (!dev_attr)
		goto out_freeirq_count;
		return -ENOMEM;

	event_name = kzalloc(sizeof(*event_name)*num_irqs, GFP_KERNEL);
	event_name = devm_kzalloc(&plf->dev,
				  sizeof(*event_name)*num_irqs, GFP_KERNEL);
	if (!event_name)
		goto out_freedev_attr;
		return -ENOMEM;

	res = platform_get_resource_byname(plf, 0, "IRQ_AB8500");
	if (!res) {
		dev_err(&plf->dev, "AB8500 irq not found, err %d\n",
			irq_first);
		ret = -ENXIO;
		goto out_freeevent_name;
		return ENXIO;
	}
	irq_ab8500 = res->start;

@@ -2971,16 +2972,14 @@ static int ab8500_debug_probe(struct platform_device *plf)
	if (irq_first < 0) {
		dev_err(&plf->dev, "First irq not found, err %d\n",
			irq_first);
		ret = irq_first;
		goto out_freeevent_name;
		return irq_first;
	}

	irq_last = platform_get_irq_byname(plf, "IRQ_LAST");
	if (irq_last < 0) {
		dev_err(&plf->dev, "Last irq not found, err %d\n",
			irq_last);
		ret = irq_last;
		goto out_freeevent_name;
		return irq_last;
	}

	ab8500_dir = debugfs_create_dir(AB8500_NAME_STRING, NULL);
@@ -3189,22 +3188,13 @@ err:
	if (ab8500_dir)
		debugfs_remove_recursive(ab8500_dir);
	dev_err(&plf->dev, "failed to create debugfs entries.\n");
out_freeevent_name:
	kfree(event_name);
out_freedev_attr:
	kfree(dev_attr);
out_freeirq_count:
	kfree(irq_count);

	return ret;
	return -ENOMEM;
}

static int ab8500_debug_remove(struct platform_device *plf)
{
	debugfs_remove_recursive(ab8500_dir);
	kfree(event_name);
	kfree(dev_attr);
	kfree(irq_count);

	return 0;
}