net/mlx4_core: Fix error handling in mlx4_init_port_info.
Subsystems (4)
PATCH v2 1/1 net/mlx4_core: Fix error handling in mlx4_init_port_info.
Avoid exiting the function with a lingering sysfs file (if the first call to device_create_file() fails while the second succeeds), and avoid calling devlink_port_unregister() twice.
In other words, either mlx4_init_port_info() succeeds and returns zero, or it fails, returns non-zero, and requires no cleanup.
ports")
---
v1 -> v2: Added "Fixes" tag.
--- drivers/net/ethernet/mellanox/mlx4/main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/net/ethernet/mellanox/mlx4/main.c +3 -1
@@ -3007,6 +3007,7 @@ static int mlx4_init_port_info(struct mlx4_dev *dev, int port)mlx4_err (dev,"Failed to create file for port %d\n" , port);devlink_port_unregister (&info->devlink_port); info->port =-1 ; +return err; }sprintf (info->dev_mtu_name,"mlx4_port%d_mtu" , port);
@@ -3028,9 +3029,10 @@ static int mlx4_init_port_info(struct mlx4_dev *dev, int port) &info->port_attr);devlink_port_unregister (&info->devlink_port); info->port =-1 ; +return err; } -return err; +return 0 ; }static void mlx4_cleanup_port_info (struct mlx4_port_info *info)
Signature · 1 line
2.17.0.441.gb46fe60e1d-goog
Quoted 9 lines · Tarick Bedeir
Avoid exiting the function with a lingering sysfs file (if the first call to
device_create_file()fails while the second succeeds), and avoid callingdevlink_port_unregister()twice.In other words, either
mlx4_init_port_info()succeeds and returns zero, or it fails, returns non-zero, and requires no cleanup.Fixes 096335b3f983 ("mlx4_core: Allow dynamic MTU configuration for IBports")
Please don't break "Fixes" lines, it complicates "grep".
IMHO, general cleanup exit point is needed in this function (goto ...), but your fix is good enough too. Thanks for doing it.
Quoted 31 lines · Tarick Bedeir
Avoid exiting the function with a lingering sysfs file (if the first call to
device_create_file()fails while the second succeeds), and avoid callingdevlink_port_unregister()twice.In other words, either
mlx4_init_port_info()succeeds and returns zero, or it fails, returns non-zero, and requires no cleanup.Fixes 096335b3f983 ("mlx4_core: Allow dynamic MTU configuration for IBports")
Signed-off-by Tarick Bedeir <[email protected]>---
v1 -> v2: Added "Fixes" tag.--- drivers/net/ethernet/mellanox/mlx4/main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)drivers/net/ethernet/mellanox/mlx4/main.c +1
-0@@ -3007,6 +3007,7 @@ static int mlx4_init_port_info(struct mlx4_dev *dev, int port)mlx4_err (dev,"Failed to create file for port %d\n" , port);devlink_port_unregister (&info->devlink_port); info->port =-1 ; +return err; }sprintf (info->dev_mtu_name,"mlx4_port%d_mtu" , port);@@ -3028,9 +3029,10 @@ static int mlx4_init_port_info(struct mlx4_dev *dev, int port) &info->port_attr);
drivers/net/ethernet/mellanox/mlx4/main.c static int mlx4_init_port_info(struct mlx4_dev *dev, int port) · line 3038
Quoted 10 lines
drivers/net/ethernet/mellanox/mlx4/main.c +2
-1devlink_port_unregister (&info->devlink_port); info->port =-1 ; +return err; } -return err; +return 0 ; }static void mlx4_cleanup_port_info (struct mlx4_port_info *info)
Thanks for you patch.
Dave, please queue for -stable.
Best,
Tariq
David Miller
maintainerFrom: Tarick Bedeir <[email protected]>
Date: Sun, 13 May 2018 16:38:45 -0700
Quoted 4 lines
Avoid exiting the function with a lingering sysfs file (if the first call to
device_create_file()fails while the second succeeds), and avoid callingdevlink_port_unregister()twice.
Quoted 8 lines
In other words, either
mlx4_init_port_info()succeeds and returns zero, or it fails, returns non-zero, and requires no cleanup.Fixes 096335b3f983 ("mlx4_core: Allow dynamic MTU configuration for IBports")
Signed-off-by Tarick Bedeir <[email protected]>---
v1 -> v2: Added "Fixes" tag.
Applied and queued up for -stable.