diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-07-07 04:24:54 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-07-07 04:25:07 -0400 |
commit | c99a444c5cc242a89845be83236aacd7db628ef5 (patch) | |
tree | c4891accfde322013b94cc5dfd767184a1a8ccfb /libbcachefs/varint.c | |
parent | 619c99de4be8f0618e7c4cb65039de2aa1e2536c (diff) |
Update bcachefs sources to 25de2b00dc bcachefs: Change check for invalid key types
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'libbcachefs/varint.c')
-rw-r--r-- | libbcachefs/varint.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/libbcachefs/varint.c b/libbcachefs/varint.c index 5143b603..ef030fc0 100644 --- a/libbcachefs/varint.c +++ b/libbcachefs/varint.c @@ -22,12 +22,13 @@ int bch2_varint_encode(u8 *out, u64 v) { unsigned bits = fls64(v|1); unsigned bytes = DIV_ROUND_UP(bits, 7); + __le64 v_le; if (likely(bytes < 9)) { v <<= bytes; v |= ~(~0 << (bytes - 1)); - v = cpu_to_le64(v); - memcpy(out, &v, bytes); + v_le = cpu_to_le64(v); + memcpy(out, &v_le, bytes); } else { *out++ = 255; bytes = 9; @@ -57,9 +58,9 @@ int bch2_varint_decode(const u8 *in, const u8 *end, u64 *out) return -1; if (likely(bytes < 9)) { - v = 0; - memcpy(&v, in, bytes); - v = le64_to_cpu(v); + __le64 v_le = 0; + memcpy(&v_le, in, bytes); + v = le64_to_cpu(v_le); v >>= bytes; } else { v = get_unaligned_le64(++in); |