| From 0973f7badf2ee18e7a03128637c8114fabf02d1f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 25 Sep 2020 10:55:18 +0100 |
| Subject: slimbus: core: check get_addr before removing laddr ida |
| |
| From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> |
| |
| [ Upstream commit f97769fde678e111a1b7b165b380d8a3dfe54f4e ] |
| |
| logical address can be either assigned by the SLIMBus controller or the core. |
| Core uses IDA in cases where get_addr callback is not provided by the |
| controller. |
| Core already has this check while allocating IDR, however during absence |
| reporting this is not checked. This patch fixes this issue. |
| |
| Fixes: 46a2bb5a7f7e ("slimbus: core: Add slim controllers support") |
| Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> |
| Link: https://lore.kernel.org/r/20200925095520.27316-2-srinivas.kandagatla@linaro.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/slimbus/core.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/slimbus/core.c b/drivers/slimbus/core.c |
| index ae1e248a8fb8a..58b63ae0e75a6 100644 |
| --- a/drivers/slimbus/core.c |
| +++ b/drivers/slimbus/core.c |
| @@ -326,8 +326,8 @@ void slim_report_absent(struct slim_device *sbdev) |
| mutex_lock(&ctrl->lock); |
| sbdev->is_laddr_valid = false; |
| mutex_unlock(&ctrl->lock); |
| - |
| - ida_simple_remove(&ctrl->laddr_ida, sbdev->laddr); |
| + if (!ctrl->get_laddr) |
| + ida_simple_remove(&ctrl->laddr_ida, sbdev->laddr); |
| slim_device_update_status(sbdev, SLIM_DEVICE_STATUS_DOWN); |
| } |
| EXPORT_SYMBOL_GPL(slim_report_absent); |
| -- |
| 2.25.1 |
| |