Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1fb1191 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: pd: Fix memory leak in usbpd_create()"

parents 7c68e9ae c2d7c0bf
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -4254,6 +4254,13 @@ struct usbpd *devm_usbpd_get_by_phandle(struct device *dev, const char *phandle)
}
EXPORT_SYMBOL(devm_usbpd_get_by_phandle);

static void usbpd_release(struct device *dev)
{
	struct usbpd *pd = container_of(dev, struct usbpd, dev);

	kfree(pd);
}

static int num_pd_instances;

/**
@@ -4278,6 +4285,7 @@ struct usbpd *usbpd_create(struct device *parent)
	device_initialize(&pd->dev);
	pd->dev.class = &usbpd_class;
	pd->dev.parent = parent;
	pd->dev.release = usbpd_release;
	dev_set_drvdata(&pd->dev, pd);

	ret = dev_set_name(&pd->dev, "usbpd%d", num_pd_instances++);
@@ -4435,7 +4443,7 @@ struct usbpd *usbpd_create(struct device *parent)
	device_del(&pd->dev);
free_pd:
	num_pd_instances--;
	kfree(pd);
	put_device(&pd->dev);
	return ERR_PTR(ret);
}
EXPORT_SYMBOL(usbpd_create);
@@ -4453,8 +4461,7 @@ void usbpd_destroy(struct usbpd *pd)
	power_supply_unreg_notifier(&pd->psy_nb);
	power_supply_put(pd->usb_psy);
	destroy_workqueue(pd->wq);
	device_del(&pd->dev);
	kfree(pd);
	device_unregister(&pd->dev);
}
EXPORT_SYMBOL(usbpd_destroy);