summaryrefslogtreecommitdiffstats
path: root/src/evaluate.c
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2020-03-03 09:48:31 +0000
committerFlorian Westphal <fw@strlen.de>2020-03-04 23:36:45 +0100
commitbb03cbcd18a1e3e2c029ecaaf9b58d3dd6987b14 (patch)
tree64f6e8e6c4cf4d589852ebdd9483d7b7620ba2da /src/evaluate.c
parent904bad2bcfa72cb197e9fe18db3c4681086000ea (diff)
evaluate: no need to swap byte-order for values of fewer than 16 bits.
Endianness is not meaningful for objects smaller than 2 bytes and the byte-order conversions are no-ops in the kernel, so just update the expression as if it were constant. Signed-off-by: Jeremy Sowden <jeremy@azazel.net> Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src/evaluate.c')
-rw-r--r--src/evaluate.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index 9b1a04f2..f4260436 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -147,7 +147,7 @@ static int byteorder_conversion(struct eval_ctx *ctx, struct expr **expr,
byteorder_names[byteorder],
byteorder_names[(*expr)->byteorder]);
- if (expr_is_constant(*expr))
+ if (expr_is_constant(*expr) || (*expr)->len / BITS_PER_BYTE < 2)
(*expr)->byteorder = byteorder;
else {
op = byteorder_conversion_op(*expr, byteorder);