reset: Do not register resource data for missing resets
When an optional reset is not present, __devm_reset_control_get() and devm_reset_control_array_get() still register resource data to release the non-existing reset on cleanup, which is futile. Fix this by skipping NULL reset control pointers. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
This commit is contained in:
parent
723c0011c7
commit
db23808615
|
@ -787,7 +787,7 @@ struct reset_control *__devm_reset_control_get(struct device *dev,
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
rstc = __reset_control_get(dev, id, index, shared, optional, acquired);
|
rstc = __reset_control_get(dev, id, index, shared, optional, acquired);
|
||||||
if (!IS_ERR(rstc)) {
|
if (!IS_ERR_OR_NULL(rstc)) {
|
||||||
*ptr = rstc;
|
*ptr = rstc;
|
||||||
devres_add(dev, ptr);
|
devres_add(dev, ptr);
|
||||||
} else {
|
} else {
|
||||||
|
@ -928,7 +928,7 @@ devm_reset_control_array_get(struct device *dev, bool shared, bool optional)
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
rstc = of_reset_control_array_get(dev->of_node, shared, optional, true);
|
rstc = of_reset_control_array_get(dev->of_node, shared, optional, true);
|
||||||
if (IS_ERR(rstc)) {
|
if (IS_ERR_OR_NULL(rstc)) {
|
||||||
devres_free(devres);
|
devres_free(devres);
|
||||||
return rstc;
|
return rstc;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue