hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr
authorHangbin Liu <liuhangbin@gmail.com>
Fri, 5 Sep 2025 09:15:32 +0000 (09:15 +0000)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 11 Sep 2025 09:49:19 +0000 (11:49 +0200)
commit393c841fe4333cdd856d0ca37b066d72746cfaa6
tree2ff9e8f42ff3c0a596961f1923f5c7a997a9a227
parent8884c693991333ae065830554b9b0c96590b1bb2
hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr

hsr_port_get_hsr() iterates over ports using hsr_for_each_port(),
but many of its callers do not hold the required RCU lock.

Switch to hsr_for_each_port_rtnl(), since most callers already hold
the rtnl lock. After review, all callers are covered by either the rtnl
lock or the RCU lock, except hsr_dev_xmit(). Fix this by adding an
RCU read lock there.

Fixes: c5a759117210 ("net/hsr: Use list_head (and rcu) instead of array for slave devices.")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250905091533.377443-3-liuhangbin@gmail.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/hsr/hsr_device.c
net/hsr/hsr_main.c