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] [day] [month] [year] [list]
Date:   Fri, 23 Nov 2018 11:06:03 -0800 (PST)
From:   David Miller <davem@...emloft.net>
To:     felix.jia@...iedtelesis.co.nz
Cc:     blair.steven@...iedtelesis.co.nz, netdev@...r.kernel.org,
        sheena.mira-ato@...iedtelesis.co.nz, masakazu.asama@...il.com
Subject: Re: [PATCH v1 net-next] ip6_tunnel: Adding support of mapping
 rules for MAP-E tunnel

From: Felix Jia <felix.jia@...iedtelesis.co.nz>
Date: Tue, 20 Nov 2018 14:53:24 +1300

> +struct ip6_tnl_rule {
> +	u8 version;
> +	struct in6_addr ipv6_subnet;
> +	u8 ipv6_prefixlen;
> +	struct in_addr ipv4_subnet;
> +	u8 ipv4_prefixlen;
> +	u8 ea_length;
> +	u8 psid_offset;

Please arrange the members of this structure better so that there is no
internal padding.  Putting a u8 before an in6_addr puts at least 3 bytes
of wasted padding after the u8, for example.

> +	u8 *ptr;
> +	struct iphdr *icmpiph = NULL;
> +	struct tcphdr *tcph, *icmptcph;
> +	struct udphdr *udph, *icmpudph;
> +	struct icmphdr *icmph, *icmpicmph;

Please arrange all local variables from longest to shortest line, ie. reverse
christmas tree format.

> +	int i, pbw0, pbi0, pbi1;
> +	__u32 addr[4];
> +	__u32 psid = 0;
> +	__u32 mask = 0;
> +	__u32 a = ntohl(addr4);
> +	__u16 p = ntohs(port4);
> +	int psid_prefix_length = 0;
> +	int psid_mask;
> +	__u32 id0 = 0;
> +	__u32 id1 = 0;

Likewise.

Also, many of these explicit "= 0" initializations are unnecessary and
make the declarations more ugly than they need to be.

> +static void
> +ip6_tnl_mape_dst(struct net_device *dev, struct sk_buff *skb,
> +		 struct flowi6 *fl6)
> +{
> +	struct ip6_tnl *t = netdev_priv(dev);
> +	struct iphdr *iph;
> +	__be32 saddr4, daddr4, addr;
> +	__be16 sport4, dport4, port;
> +	__u8 proto;
> +	int icmperr;
> +	struct ip6_tnl_rule *mr = NULL;

Reverse christmas tree please.

> +static struct ip6_tnl __rcu **
> +ip6_tnl_bucket_r_any(struct ip6_tnl_net *ip6n, const struct __ip6_tnl_parm *p)
> +{
> +	const struct in6_addr *local = &p->laddr;
> +	unsigned int h = 0;
> +	int prio = 0;
> +	struct in6_addr any;

Likewise.

And so on and so forth for your entire patch.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ