devlink/port: Check attributes early and constify

Constify the devlink port attributes to indicate they are read only
and does not depend on anything else. Therefore, validate it early
before setting in the devlink port.

Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Parav Pandit <parav@nvidia.com>
Link: https://patch.msgid.link/20250813094417.7269-3-parav@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Parav Pandit 2025-08-13 12:44:17 +03:00 committed by Jakub Kicinski
parent 0ebc0bcd0a
commit 41a6e8ab18
2 changed files with 3 additions and 3 deletions

View File

@ -1743,7 +1743,7 @@ void devlink_port_type_ib_set(struct devlink_port *devlink_port,
struct ib_device *ibdev); struct ib_device *ibdev);
void devlink_port_type_clear(struct devlink_port *devlink_port); void devlink_port_type_clear(struct devlink_port *devlink_port);
void devlink_port_attrs_set(struct devlink_port *devlink_port, void devlink_port_attrs_set(struct devlink_port *devlink_port,
struct devlink_port_attrs *devlink_port_attrs); const struct devlink_port_attrs *attrs);
void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 controller, void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 controller,
u16 pf, bool external); u16 pf, bool external);
void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 controller, void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 controller,

View File

@ -1356,13 +1356,13 @@ static void __devlink_port_attrs_set(struct devlink_port *devlink_port,
* @attrs: devlink port attrs * @attrs: devlink port attrs
*/ */
void devlink_port_attrs_set(struct devlink_port *devlink_port, void devlink_port_attrs_set(struct devlink_port *devlink_port,
struct devlink_port_attrs *attrs) const struct devlink_port_attrs *attrs)
{ {
ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port); ASSERT_DEVLINK_PORT_NOT_REGISTERED(devlink_port);
WARN_ON(attrs->splittable && attrs->split);
devlink_port->attrs = *attrs; devlink_port->attrs = *attrs;
__devlink_port_attrs_set(devlink_port, attrs->flavour); __devlink_port_attrs_set(devlink_port, attrs->flavour);
WARN_ON(attrs->splittable && attrs->split);
} }
EXPORT_SYMBOL_GPL(devlink_port_attrs_set); EXPORT_SYMBOL_GPL(devlink_port_attrs_set);