forked from luck/tmp_suning_uos_patched
devlink: Avoid overwriting port attributes of registered port
Cited commit in fixes tag overwrites the port attributes for the
registered port.
Avoid such error by checking registered flag before setting attributes.
Fixes: 71ad8d55f8
("devlink: Replace devlink_port_attrs_set parameters with a struct")
Signed-off-by: Parav Pandit <parav@nvidia.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20201111034744.35554-1-parav@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9e2b7fa2df
commit
9f73bd1c2c
|
@ -8254,8 +8254,6 @@ static int __devlink_port_attrs_set(struct devlink_port *devlink_port,
|
|||
{
|
||||
struct devlink_port_attrs *attrs = &devlink_port->attrs;
|
||||
|
||||
if (WARN_ON(devlink_port->registered))
|
||||
return -EEXIST;
|
||||
devlink_port->attrs_set = true;
|
||||
attrs->flavour = flavour;
|
||||
if (attrs->switch_id.id_len) {
|
||||
|
@ -8279,6 +8277,8 @@ void devlink_port_attrs_set(struct devlink_port *devlink_port,
|
|||
{
|
||||
int ret;
|
||||
|
||||
if (WARN_ON(devlink_port->registered))
|
||||
return;
|
||||
devlink_port->attrs = *attrs;
|
||||
ret = __devlink_port_attrs_set(devlink_port, attrs->flavour);
|
||||
if (ret)
|
||||
|
@ -8301,6 +8301,8 @@ void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 contro
|
|||
struct devlink_port_attrs *attrs = &devlink_port->attrs;
|
||||
int ret;
|
||||
|
||||
if (WARN_ON(devlink_port->registered))
|
||||
return;
|
||||
ret = __devlink_port_attrs_set(devlink_port,
|
||||
DEVLINK_PORT_FLAVOUR_PCI_PF);
|
||||
if (ret)
|
||||
|
@ -8326,6 +8328,8 @@ void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 contro
|
|||
struct devlink_port_attrs *attrs = &devlink_port->attrs;
|
||||
int ret;
|
||||
|
||||
if (WARN_ON(devlink_port->registered))
|
||||
return;
|
||||
ret = __devlink_port_attrs_set(devlink_port,
|
||||
DEVLINK_PORT_FLAVOUR_PCI_VF);
|
||||
if (ret)
|
||||
|
|
Loading…
Reference in New Issue
Block a user