mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-04 01:57:59 +00:00
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: 5024c33ac354 ("gue: Add infrastructure for flags and options") Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2342b8d95b
commit
200809716a
@ -44,10 +44,10 @@ struct guehdr {
|
|||||||
#else
|
#else
|
||||||
#error "Please fix <asm/byteorder.h>"
|
#error "Please fix <asm/byteorder.h>"
|
||||||
#endif
|
#endif
|
||||||
__u8 proto_ctype;
|
__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
|
* 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.
|
* the flags exceeds the options length specific in hlen of the GUE header.
|
||||||
*/
|
*/
|
||||||
static inline int validate_gue_flags(struct guehdr *guehdr,
|
static inline int validate_gue_flags(struct guehdr *guehdr, size_t optlen)
|
||||||
size_t optlen)
|
|
||||||
{
|
{
|
||||||
|
__be16 flags = guehdr->flags;
|
||||||
size_t len;
|
size_t len;
|
||||||
__be32 flags = guehdr->flags;
|
|
||||||
|
|
||||||
if (flags & ~GUE_FLAGS_ALL)
|
if (flags & ~GUE_FLAGS_ALL)
|
||||||
return 1;
|
return 1;
|
||||||
@ -101,12 +100,13 @@ static inline int validate_gue_flags(struct guehdr *guehdr,
|
|||||||
/* Private flags are last four bytes accounted in
|
/* Private flags are last four bytes accounted in
|
||||||
* guehdr_flags_len
|
* 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;
|
return 1;
|
||||||
|
|
||||||
len += guehdr_priv_flags_len(flags);
|
len += guehdr_priv_flags_len(pflags);
|
||||||
if (len > optlen)
|
if (len > optlen)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user