|
@@ -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;
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -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;
|
|
|
}
|