diff options
author | 2020-01-22 09:05:34 +0100 | |
---|---|---|
committer | 2020-01-22 09:05:34 +0100 | |
commit | c318f074d9fdeae16e19cbb2ed53b50d2bcdfdb8 (patch) | |
tree | 44c6552fa919dfe1fc681949bf5d81fcf6a2beb8 /kernel/bpf/tnum.c | |
parent | Merge tag 'iio-for-5.6b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next (diff) | |
parent | Linux 5.5-rc7 (diff) | |
download | wireguard-linux-c318f074d9fdeae16e19cbb2ed53b50d2bcdfdb8.tar.xz wireguard-linux-c318f074d9fdeae16e19cbb2ed53b50d2bcdfdb8.zip |
Merge 5.5-rc7 into staging-next
We want the staging fixes in here as well
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to '')
-rw-r--r-- | kernel/bpf/tnum.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/bpf/tnum.c b/kernel/bpf/tnum.c index ca52b9642943..d4f335a9a899 100644 --- a/kernel/bpf/tnum.c +++ b/kernel/bpf/tnum.c @@ -44,14 +44,19 @@ struct tnum tnum_rshift(struct tnum a, u8 shift) return TNUM(a.value >> shift, a.mask >> shift); } -struct tnum tnum_arshift(struct tnum a, u8 min_shift) +struct tnum tnum_arshift(struct tnum a, u8 min_shift, u8 insn_bitness) { /* if a.value is negative, arithmetic shifting by minimum shift * will have larger negative offset compared to more shifting. * If a.value is nonnegative, arithmetic shifting by minimum shift * will have larger positive offset compare to more shifting. */ - return TNUM((s64)a.value >> min_shift, (s64)a.mask >> min_shift); + if (insn_bitness == 32) + return TNUM((u32)(((s32)a.value) >> min_shift), + (u32)(((s32)a.mask) >> min_shift)); + else + return TNUM((s64)a.value >> min_shift, + (s64)a.mask >> min_shift); } struct tnum tnum_add(struct tnum a, struct tnum b) |