bus: mhi: core: Drop the references to mhi_dev in mhi_destroy_device()
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Tue, 24 Mar 2020 06:10:47 +0000 (11:40 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 26 Mar 2020 14:51:08 +0000 (15:51 +0100)
commit3eb583a6d0aee952715d34f2bbf58db52c5e7c5e
treef064e79917b5762d53bf1d2b69aa2f56c768a770
parent93e17a44347acd747a76d63dd9339e48c2c9e308
bus: mhi: core: Drop the references to mhi_dev in mhi_destroy_device()

For some scenarios like controller suspend and resume, mhi_destroy_device()
will get called without mhi_unregister_controller(). In that case, the
references to the mhi_dev created for the channels will not be dropped
but the channels will be destroyed as per the spec. This will cause issue
during resume as the channels will not be created due to the fact that
mhi_dev is not NULL.

Hence, this change decrements the refcount for mhi_dev in
mhi_destroy_device() for concerned channels and also sets mhi_dev to NULL
in release_device().

Reported-by: Carl Huang <cjhuang@codeaurora.org>
Reviewed-by: Jeffrey Hugo <jhugo@codeaurora.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20200324061050.14845-5-manivannan.sadhasivam@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/bus/mhi/core/init.c
drivers/bus/mhi/core/main.c