diff options
Diffstat (limited to 'drivers/reset/core.c')
| -rw-r--r-- | drivers/reset/core.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/reset/core.c b/drivers/reset/core.c index 395dc9ce492e..b8ae1dbd4c17 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c @@ -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);  |