summaryrefslogtreecommitdiff
path: root/libbcachefs/varint.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-07-07 04:24:54 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-07-07 04:25:07 -0400
commitc99a444c5cc242a89845be83236aacd7db628ef5 (patch)
treec4891accfde322013b94cc5dfd767184a1a8ccfb /libbcachefs/varint.c
parent619c99de4be8f0618e7c4cb65039de2aa1e2536c (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.c11
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);