From: Peter Chen Date: Tue, 22 Oct 2013 03:13:41 +0000 (+0800) Subject: usb: chipidea: host: more enhancement when ci->hcd is NULL X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=df101c531eb737915349a1c4b677da7db55eaf69;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git usb: chipidea: host: more enhancement when ci->hcd is NULL Like http://marc.info/?l=linux-usb&m=138200449428874&w=2 said: two more things are needed to be done: - If host_start fails, the host_stop should not be called, so we add check that ci->hcd is not NULL. - if the host_start fails at the beginning, we need to consider regulator mismatch issue. Signed-off-by: Peter Chen Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c index 64d7a6d9a1ad..59e6020ea753 100644 --- a/drivers/usb/chipidea/host.c +++ b/drivers/usb/chipidea/host.c @@ -103,15 +103,15 @@ static void host_stop(struct ci_hdrc *ci) if (hcd) { usb_remove_hcd(hcd); usb_put_hcd(hcd); + if (ci->platdata->reg_vbus) + regulator_disable(ci->platdata->reg_vbus); } - if (ci->platdata->reg_vbus) - regulator_disable(ci->platdata->reg_vbus); } void ci_hdrc_host_destroy(struct ci_hdrc *ci) { - if (ci->role == CI_ROLE_HOST) + if (ci->role == CI_ROLE_HOST && ci->hcd) host_stop(ci); }