devlink relation state is normally released from devl_unregister(), which
calls devlink_rel_put(). This misses devlink instances that get a nested
relation before registration and then fail probe before devl_register() is
reached.
That flow can happen for SFs. The child devlink gets linked to its
parent before registration, then a later probe error calls devlink_free()
directly. Since the instance was never registered, devl_unregister() is not
called and devlink->rel is leaked.
Release any pending relation from devlink_free() as well. The registered
path is unchanged because devl_unregister() already clears devlink->rel
before devlink_free() runs.
Fixes:
|
||
|---|---|---|
| .. | ||
| core.c | ||
| dev.c | ||
| devl_internal.h | ||
| dpipe.c | ||
| health.c | ||
| linecard.c | ||
| Makefile | ||
| netlink.c | ||
| netlink_gen.c | ||
| netlink_gen.h | ||
| param.c | ||
| port.c | ||
| rate.c | ||
| region.c | ||
| resource.c | ||
| sb.c | ||
| sh_dev.c | ||
| trap.c | ||