Skip to content

Commit 9f73bd1

Browse files
paravmellanoxkuba-moo
authored andcommitted
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: 71ad8d5 ("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>
1 parent 9e2b7fa commit 9f73bd1

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

net/core/devlink.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8254,8 +8254,6 @@ static int __devlink_port_attrs_set(struct devlink_port *devlink_port,
82548254
{
82558255
struct devlink_port_attrs *attrs = &devlink_port->attrs;
82568256

8257-
if (WARN_ON(devlink_port->registered))
8258-
return -EEXIST;
82598257
devlink_port->attrs_set = true;
82608258
attrs->flavour = flavour;
82618259
if (attrs->switch_id.id_len) {
@@ -8279,6 +8277,8 @@ void devlink_port_attrs_set(struct devlink_port *devlink_port,
82798277
{
82808278
int ret;
82818279

8280+
if (WARN_ON(devlink_port->registered))
8281+
return;
82828282
devlink_port->attrs = *attrs;
82838283
ret = __devlink_port_attrs_set(devlink_port, attrs->flavour);
82848284
if (ret)
@@ -8301,6 +8301,8 @@ void devlink_port_attrs_pci_pf_set(struct devlink_port *devlink_port, u32 contro
83018301
struct devlink_port_attrs *attrs = &devlink_port->attrs;
83028302
int ret;
83038303

8304+
if (WARN_ON(devlink_port->registered))
8305+
return;
83048306
ret = __devlink_port_attrs_set(devlink_port,
83058307
DEVLINK_PORT_FLAVOUR_PCI_PF);
83068308
if (ret)
@@ -8326,6 +8328,8 @@ void devlink_port_attrs_pci_vf_set(struct devlink_port *devlink_port, u32 contro
83268328
struct devlink_port_attrs *attrs = &devlink_port->attrs;
83278329
int ret;
83288330

8331+
if (WARN_ON(devlink_port->registered))
8332+
return;
83298333
ret = __devlink_port_attrs_set(devlink_port,
83308334
DEVLINK_PORT_FLAVOUR_PCI_VF);
83318335
if (ret)

0 commit comments

Comments
 (0)