]> git.dujemihanovic.xyz Git - linux.git/commitdiff
bcachefs: Fix check_snapshot() memcpy
authorKent Overstreet <kent.overstreet@linux.dev>
Sat, 24 Feb 2024 06:18:45 +0000 (01:18 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 25 Feb 2024 01:47:47 +0000 (20:47 -0500)
check_snapshot() copies the bch_snapshot to a temporary to easily handle
older versions that don't have all the fields of the current version,
but it lacked a min() to correctly handle keys newer and larger than the
current version.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/snapshot.c

index 45f67e8b29eb67f188e5cfb32aa39e0b1ad1d625..ac6ba04d5521714ece2e2cb00400fff60ec05eb6 100644 (file)
@@ -728,7 +728,7 @@ static int check_snapshot(struct btree_trans *trans,
                return 0;
 
        memset(&s, 0, sizeof(s));
-       memcpy(&s, k.v, bkey_val_bytes(k.k));
+       memcpy(&s, k.v, min(sizeof(s), bkey_val_bytes(k.k)));
 
        id = le32_to_cpu(s.parent);
        if (id) {