Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 20080971 authored by Xin Long's avatar Xin Long Committed by David S. Miller
Browse files

fou: fix some member types in guehdr



guehdr struct is used to build or parse gue packets, which
are always in big endian. It's better to define all guehdr
members as __beXX types.

Also, in validate_gue_flags it's not good to use a __be32
variable for both Standard flags(__be16) and Private flags
(__be32), and pass it to other funcions.

This patch could fix a bunch of sparse warnings from fou.

Fixes: 5024c33a ("gue: Add infrastructure for flags and options")
Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2342b8d9
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -45,9 +45,9 @@ struct guehdr {
#error  "Please fix <asm/byteorder.h>"
#endif
			__u8	proto_ctype;
			__u16   flags;
			__be16	flags;
		};
		__u32 word;
		__be32	word;
	};
};

@@ -84,11 +84,10 @@ static inline size_t guehdr_priv_flags_len(__be32 flags)
 * if there is an unknown standard or private flags, or the options length for
 * the flags exceeds the options length specific in hlen of the GUE header.
 */
static inline int validate_gue_flags(struct guehdr *guehdr,
				     size_t optlen)
static inline int validate_gue_flags(struct guehdr *guehdr, size_t optlen)
{
	__be16 flags = guehdr->flags;
	size_t len;
	__be32 flags = guehdr->flags;

	if (flags & ~GUE_FLAGS_ALL)
		return 1;
@@ -101,12 +100,13 @@ static inline int validate_gue_flags(struct guehdr *guehdr,
		/* Private flags are last four bytes accounted in
		 * guehdr_flags_len
		 */
		flags = *(__be32 *)((void *)&guehdr[1] + len - GUE_LEN_PRIV);
		__be32 pflags = *(__be32 *)((void *)&guehdr[1] +
					    len - GUE_LEN_PRIV);

		if (flags & ~GUE_PFLAGS_ALL)
		if (pflags & ~GUE_PFLAGS_ALL)
			return 1;

		len += guehdr_priv_flags_len(flags);
		len += guehdr_priv_flags_len(pflags);
		if (len > optlen)
			return 1;
	}