On Thu Sep 10, 2026 at 9:56 AM EEST, Jan Kiszka wrote:
> From: Jan Kiszka <[email protected]>
>
> In case optee_bind_services is invoked more than once successfully, make
> sure that already bound services are not rebound, creating multiple
> instances of themselves. When introducing RPMB-driven service scanning
> this scenario could pop up.
>
> Signed-off-by: Jan Kiszka <[email protected]>
> ---

Reviewed-by: Ilias Apalodimas <[email protected]>

>  drivers/tee/optee/core.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/drivers/tee/optee/core.c b/drivers/tee/optee/core.c
> index 2871760a7b7..e8ba8f6cddd 100644
> --- a/drivers/tee/optee/core.c
> +++ b/drivers/tee/optee/core.c
> @@ -83,6 +83,7 @@ static int bind_service_list(struct udevice *dev, struct 
> tee_shm *service_list,
>  {
>       const struct tee_optee_ta_uuid *service_uuid = (const void 
> *)service_list->addr;
>       struct optee_service *service;
> +     struct udevice *service_dev;
>       size_t idx;
>       int ret;
>
> @@ -91,6 +92,11 @@ static int bind_service_list(struct udevice *dev, struct 
> tee_shm *service_list,
>               if (!service)
>                       continue;
>
> +             ret = device_find_child_by_name(dev, service->driver_name,
> +                                             &service_dev);
> +             if (!ret && dev_get_flags(service_dev) & DM_FLAG_BOUND)
> +                     continue;
> +
>               ret = device_bind_driver_to_node(dev, service->driver_name, 
> service->driver_name,
>                                                dev_ofnode(dev), NULL);
>               if (ret) {

Reply via email to