Skip to content

Commit

Permalink
fou: fix some member types in guehdr
Browse files Browse the repository at this point in the history
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: 5024c33 ("gue: Add infrastructure for flags and options")
Signed-off-by: Xin Long <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
lxin authored and davem330 committed Dec 11, 2017
1 parent 2342b8d commit 2008097
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions include/net/gue.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ struct guehdr {
#else
#error "Please fix <asm/byteorder.h>"
#endif
__u8 proto_ctype;
__u16 flags;
__u8 proto_ctype;
__be16 flags;
};
__u32 word;
__be32 word;
};
};

Expand Down Expand Up @@ -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;
Expand All @@ -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;
}
Expand Down

0 comments on commit 2008097

Please sign in to comment.