aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2009-03-31 09:54:15 -0700
committerRoland Dreier <rolandd@cisco.com>2009-03-31 09:54:15 -0700
commit352b09edd7fa8145bfc9e5db0cc0fed971b69440 (patch)
treea76d32027309de5bc16b345bd74bcb0c712df07c
parentIB/mlx4: Use pgprot_writecombine() for BlueFlame pages (diff)
downloadlinux-dev-352b09edd7fa8145bfc9e5db0cc0fed971b69440.tar.xz
linux-dev-352b09edd7fa8145bfc9e5db0cc0fed971b69440.zip
mlx4_core: Don't leak mailbox for SET_PORT on Ethernet ports
Commit 793730bf ("mlx4_core: Don't perform SET_PORT command for Ethernet ports") introduced a leak of mailbox buffers when SET_PORT was called for Ethernet ports, since it added a return after the mailbox was allocated. Fix this by checking the port type and returning *before* allocating the mailbox. Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--drivers/net/mlx4/port.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/mlx4/port.c b/drivers/net/mlx4/port.c
index 7cce3342ef8c..606aa58afdea 100644
--- a/drivers/net/mlx4/port.c
+++ b/drivers/net/mlx4/port.c
@@ -299,13 +299,14 @@ int mlx4_SET_PORT(struct mlx4_dev *dev, u8 port)
struct mlx4_cmd_mailbox *mailbox;
int err;
+ if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
+ return 0;
+
mailbox = mlx4_alloc_cmd_mailbox(dev);
if (IS_ERR(mailbox))
return PTR_ERR(mailbox);
memset(mailbox->buf, 0, 256);
- if (dev->caps.port_type[port] == MLX4_PORT_TYPE_ETH)
- return 0;
((__be32 *) mailbox->buf)[1] = dev->caps.ib_port_def_cap[port];
err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_PORT,