lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZOPZJ5kBW3_NQiw3S-DvDkYonzrW-EgxXdAqRcS1KGUrQu=w@mail.gmail.com>
Date:	Tue, 17 Sep 2013 22:25:57 +0300
From:	Or Gerlitz <or.gerlitz@...il.com>
To:	Prarit Bhargava <prarit@...hat.com>,
	Jack Morgenstein <jackm@....mellanox.co.il>
Cc:	"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
	Doug Ledford <dledford@...hat.com>,
	Amir Vadai <amirv@...lanox.com>,
	David Miller <davem@...emloft.net>,
	Or Gerlitz <ogerlitz@...lanox.com>
Subject: Re: [PATCH 2/2] Re: net, mellanox mlx4 Fix compile warnings

On Tue, Sep 17, 2013 at 10:13 PM, Prarit Bhargava <prarit@...hat.com> wrote:
> Fix unitialized variable warnings.
>
> drivers/net/ethernet/mellanox/mlx4/resource_tracker.c: In function ‘mlx4_HW2SW_CQ_wrapper’:
> drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:2551:16: error: ‘cq’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>   atomic_dec(&cq->mtt->ref_count);
>                 ^
> drivers/net/ethernet/mellanox/mlx4/resource_tracker.c: In function ‘mlx4_HW2SW_SRQ_wrapper’:
> drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:2734:17: error: ‘srq’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>   atomic_dec(&srq->mtt->ref_count);
>
> [v2]: davem suggested making cq_res_start_move_to() return 'cq' as an error
> pointer instead of setting 'cq' by reference.  I also did the same for srq.

Pravit, as I wrote you earlier on this thread, Jack from our team
maintains this piece (SRIOV resource tracker) of the mlx4 core driver
code, so I am adding him. Dave, as many of us here he might be OOO for
the coming ten days for holiday vacation, so would ask you to please
wait patiently for his ack/nak...

Or.

> Signed-off-by: Prarit Bhargava <prarit@...hat.com>
> Cc: dledford@...hat.com
> Cc: amirv@...lanox.com
> Cc: davem@...emloft.net
> Cc: ogerlitz@...lanox.com
> ---
>  .../net/ethernet/mellanox/mlx4/resource_tracker.c  |   46 ++++++++++----------
>  1 file changed, 24 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
> index dd68763..343206b 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
> @@ -1073,8 +1073,9 @@ static int eq_res_start_move_to(struct mlx4_dev *dev, int slave, int index,
>         return err;
>  }
>
> -static int cq_res_start_move_to(struct mlx4_dev *dev, int slave, int cqn,
> -                               enum res_cq_states state, struct res_cq **cq)
> +static struct res_cq *cq_res_start_move_to(struct mlx4_dev *dev,
> +                                                 int slave, int cqn,
> +                                                 enum res_cq_states state)
>  {
>         struct mlx4_priv *priv = mlx4_priv(dev);
>         struct mlx4_resource_tracker *tracker = &priv->mfunc.master.res_tracker;
> @@ -1117,18 +1118,19 @@ static int cq_res_start_move_to(struct mlx4_dev *dev, int slave, int cqn,
>                         r->com.from_state = r->com.state;
>                         r->com.to_state = state;
>                         r->com.state = RES_CQ_BUSY;
> -                       if (cq)
> -                               *cq = r;
> +               } else {
> +                       r = ERR_PTR(err);
>                 }
>         }
>
>         spin_unlock_irq(mlx4_tlock(dev));
>
> -       return err;
> +       return r;
>  }
>
> -static int srq_res_start_move_to(struct mlx4_dev *dev, int slave, int index,
> -                                enum res_cq_states state, struct res_srq **srq)
> +static struct res_srq *srq_res_start_move_to(struct mlx4_dev *dev, int slave,
> +                                            int index,
> +                                            enum res_cq_states state)
>  {
>         struct mlx4_priv *priv = mlx4_priv(dev);
>         struct mlx4_resource_tracker *tracker = &priv->mfunc.master.res_tracker;
> @@ -1167,14 +1169,14 @@ static int srq_res_start_move_to(struct mlx4_dev *dev, int slave, int index,
>                         r->com.from_state = r->com.state;
>                         r->com.to_state = state;
>                         r->com.state = RES_SRQ_BUSY;
> -                       if (srq)
> -                               *srq = r;
> +               } else {
> +                       r = ERR_PTR(err);
>                 }
>         }
>
>         spin_unlock_irq(mlx4_tlock(dev));
>
> -       return err;
> +       return r;
>  }
>
>  static void res_abort_move(struct mlx4_dev *dev, int slave,
> @@ -2530,9 +2532,9 @@ int mlx4_SW2HW_CQ_wrapper(struct mlx4_dev *dev, int slave,
>         struct res_cq *cq;
>         struct res_mtt *mtt;
>
> -       err = cq_res_start_move_to(dev, slave, cqn, RES_CQ_HW, &cq);
> -       if (err)
> -               return err;
> +       cq = cq_res_start_move_to(dev, slave, cqn, RES_CQ_HW);
> +       if (IS_ERR(cq))
> +               return PTR_ERR(cq);
>         err = get_res(dev, slave, mtt_base, RES_MTT, &mtt);
>         if (err)
>                 goto out_move;
> @@ -2565,9 +2567,9 @@ int mlx4_HW2SW_CQ_wrapper(struct mlx4_dev *dev, int slave,
>         int cqn = vhcr->in_modifier;
>         struct res_cq *cq;
>
> -       err = cq_res_start_move_to(dev, slave, cqn, RES_CQ_ALLOCATED, &cq);
> -       if (err)
> -               return err;
> +       cq = cq_res_start_move_to(dev, slave, cqn, RES_CQ_ALLOCATED);
> +       if (IS_ERR(cq))
> +               return PTR_ERR(cq);
>         err = mlx4_DMA_wrapper(dev, slave, vhcr, inbox, outbox, cmd);
>         if (err)
>                 goto out_move;
> @@ -2709,9 +2711,9 @@ int mlx4_SW2HW_SRQ_wrapper(struct mlx4_dev *dev, int slave,
>         if (srqn != (be32_to_cpu(srqc->state_logsize_srqn) & 0xffffff))
>                 return -EINVAL;
>
> -       err = srq_res_start_move_to(dev, slave, srqn, RES_SRQ_HW, &srq);
> -       if (err)
> -               return err;
> +       srq = srq_res_start_move_to(dev, slave, srqn, RES_SRQ_ALLOCATED);
> +       if (IS_ERR(srq))
> +               return PTR_ERR(srq);
>         err = get_res(dev, slave, mtt_base, RES_MTT, &mtt);
>         if (err)
>                 goto ex_abort;
> @@ -2748,9 +2750,9 @@ int mlx4_HW2SW_SRQ_wrapper(struct mlx4_dev *dev, int slave,
>         int srqn = vhcr->in_modifier;
>         struct res_srq *srq;
>
> -       err = srq_res_start_move_to(dev, slave, srqn, RES_SRQ_ALLOCATED, &srq);
> -       if (err)
> -               return err;
> +       srq = srq_res_start_move_to(dev, slave, srqn, RES_SRQ_ALLOCATED);
> +       if (IS_ERR(srq))
> +               return PTR_ERR(srq);
>         err = mlx4_DMA_wrapper(dev, slave, vhcr, inbox, outbox, cmd);
>         if (err)
>                 goto ex_abort;
> --
> 1.7.9.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ