Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [Medium] drm_fabric_endpoint_find_by_dev_name() skips ambiguity checking when 
busname is provided.
--

--- Patch [1]: [RFC PATCH 01/12] drm/fabric: add core object model and provider 
API ---
commit a52787ad8ee51af45c9fca91640883affafd66ca
Author: Ilia Levi <[email protected]>

drm/fabric: add core object model and provider API

This commit introduces a common DRM object model for interconnect fabrics,
endpoints, ports, and peers. It provides a registry and a provider API to
manage object identities, relationships, and lifetimes under a central lock.

> diff --git a/drivers/gpu/drm/fabric/drm_fabric.c 
> b/drivers/gpu/drm/fabric/drm_fabric.c
> new file mode 100644
> index 0000000000000..8769d7bdcde1f
> --- /dev/null
> +++ b/drivers/gpu/drm/fabric/drm_fabric.c

[ ... ]

> +/*
> + * Returns NULL if no endpoint matches, or ERR_PTR(-EINVAL) if @devname is
> + * ambiguous across buses and @busname does not disambiguate it.
> + */
> +struct drm_fabric_endpoint *
> +drm_fabric_endpoint_find_by_dev_name(const char *devname, const char 
> *busname)
> +{
> +     struct drm_fabric_endpoint *match = NULL;
> +     struct drm_fabric_endpoint *ep;
> +     unsigned long idx;
> +
> +     lockdep_assert_held(&drm_fabric_lock);
> +     xa_for_each(&drm_fabric_ep_xa, idx, ep) {
> +             if (strcmp(dev_name(ep->parent), devname))
> +                     continue;
> +
> +             if (busname) {
> +                     if (strcmp(dev_bus_name(ep->parent), busname))
> +                             continue;
> +                     return ep;

[Severity: Medium]
Does this early return bypass the ambiguity check if a single parent device
registers multiple endpoints? 

When a busname is provided, this path returns the very first matching endpoint
it finds. If a device matching both the devname and busname has registered
multiple endpoints, this silently resolves to the first one instead of
rejecting the ambiguous lookup with ERR_PTR(-EINVAL). 

The code block just below this handles the ambiguity correctly when busname
is not provided. Should the busname path also continue checking the rest of
the xarray to ensure only one match exists?

> +             }
> +
> +             if (match)
> +                     return ERR_PTR(-EINVAL);
> +
> +             match = ep;
> +     }
> +
> +     return match;
> +}

[ ... ]

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=1

Reply via email to