reset: warn on invalid input to reset_control_reset/assert/deassert/status
Instead of potentially crashing, dump a backtrace and return -EINVAL if rstc is NULL or an error code. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
This commit is contained in:
parent
54e991b566
commit
a3774e146a
|
@ -138,7 +138,8 @@ EXPORT_SYMBOL_GPL(devm_reset_controller_register);
|
|||
*/
|
||||
int reset_control_reset(struct reset_control *rstc)
|
||||
{
|
||||
if (WARN_ON(rstc->shared))
|
||||
if (WARN_ON(IS_ERR_OR_NULL(rstc)) ||
|
||||
WARN_ON(rstc->shared))
|
||||
return -EINVAL;
|
||||
|
||||
if (rstc->rcdev->ops->reset)
|
||||
|
@ -161,6 +162,9 @@ EXPORT_SYMBOL_GPL(reset_control_reset);
|
|||
*/
|
||||
int reset_control_assert(struct reset_control *rstc)
|
||||
{
|
||||
if (WARN_ON(IS_ERR_OR_NULL(rstc)))
|
||||
return -EINVAL;
|
||||
|
||||
if (!rstc->rcdev->ops->assert)
|
||||
return -ENOTSUPP;
|
||||
|
||||
|
@ -184,6 +188,9 @@ EXPORT_SYMBOL_GPL(reset_control_assert);
|
|||
*/
|
||||
int reset_control_deassert(struct reset_control *rstc)
|
||||
{
|
||||
if (WARN_ON(IS_ERR_OR_NULL(rstc)))
|
||||
return -EINVAL;
|
||||
|
||||
if (!rstc->rcdev->ops->deassert)
|
||||
return -ENOTSUPP;
|
||||
|
||||
|
@ -204,6 +211,9 @@ EXPORT_SYMBOL_GPL(reset_control_deassert);
|
|||
*/
|
||||
int reset_control_status(struct reset_control *rstc)
|
||||
{
|
||||
if (WARN_ON(IS_ERR_OR_NULL(rstc)))
|
||||
return -EINVAL;
|
||||
|
||||
if (rstc->rcdev->ops->status)
|
||||
return rstc->rcdev->ops->status(rstc->rcdev, rstc->id);
|
||||
|
||||
|
|
Loading…
Reference in New Issue