提交 c9218a9e 编写于 作者: P Paul Bolle 提交者: David S. Miller

net/mlx4_core: clean up cq_res_start_move_to()

Building resource_tracker.o triggers a GCC warning:
    drivers/net/ethernet/mellanox/mlx4/resource_tracker.c: In function 'mlx4_HW2SW_CQ_wrapper':
    drivers/net/ethernet/mellanox/mlx4/resource_tracker.c:3019:16: warning: 'cq' may be used uninitialized in this function [-Wmaybe-uninitialized]
      atomic_dec(&cq->mtt->ref_count);
                    ^

This is a false positive. But a cleanup of cq_res_start_move_to() can
help GCC here. The code currently uses a switch statement where an
if/else construct would do too, since only two of the switch's four
cases can ever occur. Dropping that switch makes the warning go away.

While we're at it, add some missing braces.
Signed-off-by: NPaul Bolle <pebolle@tiscali.nl>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 f7cbdb7d
...@@ -1340,43 +1340,29 @@ static int cq_res_start_move_to(struct mlx4_dev *dev, int slave, int cqn, ...@@ -1340,43 +1340,29 @@ static int cq_res_start_move_to(struct mlx4_dev *dev, int slave, int cqn,
spin_lock_irq(mlx4_tlock(dev)); spin_lock_irq(mlx4_tlock(dev));
r = res_tracker_lookup(&tracker->res_tree[RES_CQ], cqn); r = res_tracker_lookup(&tracker->res_tree[RES_CQ], cqn);
if (!r) if (!r) {
err = -ENOENT; err = -ENOENT;
else if (r->com.owner != slave) } else if (r->com.owner != slave) {
err = -EPERM; err = -EPERM;
else { } else if (state == RES_CQ_ALLOCATED) {
switch (state) { if (r->com.state != RES_CQ_HW)
case RES_CQ_BUSY:
err = -EBUSY;
break;
case RES_CQ_ALLOCATED:
if (r->com.state != RES_CQ_HW)
err = -EINVAL;
else if (atomic_read(&r->ref_count))
err = -EBUSY;
else
err = 0;
break;
case RES_CQ_HW:
if (r->com.state != RES_CQ_ALLOCATED)
err = -EINVAL;
else
err = 0;
break;
default:
err = -EINVAL; err = -EINVAL;
} else if (atomic_read(&r->ref_count))
err = -EBUSY;
else
err = 0;
} else if (state != RES_CQ_HW || r->com.state != RES_CQ_ALLOCATED) {
err = -EINVAL;
} else {
err = 0;
}
if (!err) { if (!err) {
r->com.from_state = r->com.state; r->com.from_state = r->com.state;
r->com.to_state = state; r->com.to_state = state;
r->com.state = RES_CQ_BUSY; r->com.state = RES_CQ_BUSY;
if (cq) if (cq)
*cq = r; *cq = r;
}
} }
spin_unlock_irq(mlx4_tlock(dev)); spin_unlock_irq(mlx4_tlock(dev));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册