net/mlx4_core: Fix mailbox leak in error flow when performing update qp
authorJack Morgenstein <jackm@dev.mellanox.co.il>
Thu, 8 Oct 2015 14:14:02 +0000 (17:14 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Oct 2015 14:27:51 +0000 (07:27 -0700)
The procedure mlx4_update_qp leaks mailboxes in its error-flow, fix that.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/qp.c

index 20268634a9abc7cac1f539612d7499c55d0dc645..3311f35d08e0719381a6e267e8cdf0acf9198b4d 100644 (file)
@@ -422,15 +422,15 @@ int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn,
        u64 qp_mask = 0;
        int err = 0;
 
+       if (!attr || (attr & ~MLX4_UPDATE_QP_SUPPORTED_ATTRS))
+               return -EINVAL;
+
        mailbox = mlx4_alloc_cmd_mailbox(dev);
        if (IS_ERR(mailbox))
                return PTR_ERR(mailbox);
 
        cmd = (struct mlx4_update_qp_context *)mailbox->buf;
 
-       if (!attr || (attr & ~MLX4_UPDATE_QP_SUPPORTED_ATTRS))
-               return -EINVAL;
-
        if (attr & MLX4_UPDATE_QP_SMAC) {
                pri_addr_path_mask |= 1ULL << MLX4_UPD_QP_PATH_MASK_MAC_INDEX;
                cmd->qp_context.pri_path.grh_mylmc = params->smac_index;