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]
Date:	Wed, 03 Jul 2013 13:59:28 -0700
From:	Joe Perches <joe@...ches.com>
To:	Or Gerlitz <ogerlitz@...lanox.com>
Cc:	roland@...nel.org, linux-rdma@...r.kernel.org,
	netdev@...r.kernel.org, davem@...emloft.net,
	jackm@....mellanox.co.il, eli@....mellanox.co.il,
	moshel@...lanox.com, Eli Cohen <eli@...lanox.com>
Subject: Re: [PATCH V2 5/9] IB/mlx5: Mellanox Connect-IB, IB driver part 1/5

On Wed, 2013-07-03 at 20:13 +0300, Or Gerlitz wrote:
> From: Eli Cohen <eli@...lanox.com>

more trivia:

> diff --git a/drivers/infiniband/hw/mlx5/ah.c b/drivers/infiniband/hw/mlx5/ah.c
[]
> +struct ib_ah *create_ib_ah(struct ib_ah_attr *ah_attr,
> +			   struct mlx5_ib_ah *ah)
> +{
> +	u32 sgi;

sgi is used once here and looks more confusing than helpful

> +
> +	if (ah_attr->ah_flags & IB_AH_GRH) {
> +		sgi = ah_attr->grh.sgid_index << 20;
> +
> +		memcpy(ah->av.rgid, &ah_attr->grh.dgid, 16);
> +		ah->av.grh_gid_fl = cpu_to_be32(ah_attr->grh.flow_label |
> +						(1 << 30) | sgi);
> +		ah->av.hop_limit = ah_attr->grh.hop_limit;
> +		ah->av.tclass = ah_attr->grh.traffic_class;
> +	}
> +
> +	ah->av.rlid = cpu_to_be16(ah_attr->dlid);
> +	ah->av.fl_mlid = ah_attr->src_path_bits & 0x7f;
> +	ah->av.stat_rate_sl = (ah_attr->static_rate << 4) | (ah_attr->sl & 0xf);
> +
> +	return &ah->ibah;
> +}

[]

> +static void *get_sw_cqe(struct mlx5_ib_cq *cq, int n)
> +{
> +	void *cqe = get_cqe(cq, n & cq->ibcq.cqe);
> +	struct mlx5_cqe64 *cqe64;
> +
> +	cqe64 = (cq->mcq.cqe_sz == 64) ? cqe : cqe + 64;
> +	return ((cqe64->op_own & MLX5_CQE_OWNER_MASK) ^
> +		!!(n & (cq->ibcq.cqe + 1))) ? NULL : cqe;

I think "foo ^ !!bar" is excessively tricky.

> +static enum ib_wc_opcode get_umr_comp(struct mlx5_ib_wq *wq, int idx)
> +{

> +		pr_warn("unkonwn completion status\n");

unknown tyop

[]

> +static int create_cq_user(struct mlx5_ib_dev *dev, struct ib_udata *udata,
> +			  struct ib_ucontext *context, struct mlx5_ib_cq *cq,
> +			  int entries, struct mlx5_create_cq_mbox_in **cqb,
> +			  int *cqe_size, int *index, int *inlen)
[]
> +	*inlen = sizeof **cqb + sizeof *(*cqb)->pas * ncont;

sizeof always uses parentheses

> +	*cqb = vzalloc(*inlen);

Perhaps you may be using vzalloc too often.

Maybe you should have a helper allocating either
from kmalloc or vmalloc as necessary based on size.


--
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