diff options
author | Edward Cree <ecree@solarflare.com> | 2017-08-07 15:26:36 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-08-08 17:51:34 -0700 |
commit | b03c9f9fdc37dab81ea04d5dacdc5995d4c224c2 (patch) | |
tree | 864f5f7e43fbcba5dcc2953ee84d9c1470373d59 /include/linux/tnum.h | |
parent | f1174f77b50c94eecaa658fdc56fa69b421de4b8 (diff) |
bpf/verifier: track signed and unsigned min/max values
Allows us to, sometimes, combine information from a signed check of one
bound and an unsigned check of the other.
We now track the full range of possible values, rather than restricting
ourselves to [0, 1<<30) and considering anything beyond that as
unknown. While this is probably not necessary, it makes the code more
straightforward and symmetrical between signed and unsigned bounds.
Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/tnum.h')
-rw-r--r-- | include/linux/tnum.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/tnum.h b/include/linux/tnum.h index a0b07bf1842b..0d2d3da46139 100644 --- a/include/linux/tnum.h +++ b/include/linux/tnum.h @@ -17,6 +17,8 @@ struct tnum { struct tnum tnum_const(u64 value); /* A completely unknown value */ extern const struct tnum tnum_unknown; +/* A value that's unknown except that @min <= value <= @max */ +struct tnum tnum_range(u64 min, u64 max); /* Arithmetic and logical ops */ /* Shift a tnum left (by a fixed shift) */ |