On 3/11/2024 8:34 AM, Dmitry Baryshkov wrote:
> +/**
> + * qmi_del_server() - register a service with the name service

s/register/deregister/g

> + * @qmi:     qmi handle
> + * @service: type of the service
> + * @instance:        instance of the service
> + * @version: version of the service
> + *
> + * Remove registration of the service with the name service. This notifies
> + * clients that they should no longer send messages to the client associated
> + * with @qmi.
> + *
> + * Return: 0 on success, negative errno on failure.
> + */
> +int qmi_del_server(struct qmi_handle *qmi, unsigned int service,
> +                unsigned int version, unsigned int instance)
> +{
> +     struct qmi_service *svc;
> +     struct qmi_service *tmp;
> +
> +     list_for_each_entry_safe(svc, tmp, &qmi->services, list_node) {
> +             if (svc->service != service ||
> +                 svc->version != version ||
> +                 svc->instance != instance)
> +                     continue;
> +
> +             qmi_send_del_server(qmi, svc);
> +             list_del(&svc->list_node);
> +             kfree(svc);
> +
> +             return 0;
> +     }
> +

is list_for_each_entry_safe required if we stop iterating and return
after we find the first instance of the service?

> +     return -EINVAL;
> +}
> +EXPORT_SYMBOL_GPL(qmi_del_server);

Reply via email to