Skip to contentSkip to conversation

devlink: Avoid overwriting port attributes of registered port

PATCH Superseded Parav Pandit 2 participants 5 messages Nov 10, 2020 – Nov 12, 2020

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

---
 net/core/devlink.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
net/core/devlink.c +6 -2
index a932d95be798..ab4b1368904f 100644
@@ -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)
Signature · 1 line
2.26.2
maintainer
#1 lore raw
Quoted 2 lines · On Tue, 10 Nov 2020 20:52:58 +0200 Parav Pandit wrote:

Cited commit in fixes tag overwrites the port attributes for the registered port.

Seems like you forgot the fixes tag you're referring to.

Quoted 4 lines

Avoid such error by checking registered flag before setting attributes.

#3 lore raw

PATCH RESEND 1/1 devlink: Avoid overwriting port attributes of registered port

In reply to Parav Pandit

Cited commit in fixes tag overwrites the port attributes for the registered port.

Avoid such error by checking registered flag before setting attributes.

Fixes 71ad8d55f8e5 ("devlink: Replace devlink_port_attrs_set parameters with a struct")
---
 net/core/devlink.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
net/core/devlink.c +6 -2
index a932d95be798..ab4b1368904f 100644
@@ -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)
Signature · 1 line
2.26.2
maintainer Applied
#4 lore raw
Quoted 8 lines · On Wed, 11 Nov 2020 05:47:44 +0200 Parav Pandit wrote:

Cited commit in fixes tag overwrites the port attributes for the registered port.

Avoid such error by checking registered flag before setting attributes.

Fixes 71ad8d55f8e5 ("devlink: Replace devlink_port_attrs_set parameters with a struct")

Applied, thanks!