summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-10-06 20:47:31 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-23 00:10:16 +0300
commit88d39fd544d44e1243668eb192ff1cc5cdc2d770 (patch)
tree4dedce1097cff7f9a5ca0b9534ec5c7b86d43d65 /fs
parentc2d81c24123361e5092c88e67d790097308c5b95 (diff)
downloadlinux-88d39fd544d44e1243668eb192ff1cc5cdc2d770.tar.xz
bcachefs: Switch to unsafe_memcpy() in a few places
The new fortify checking doesn't work for us in all places; this switches to unsafe_memcpy() where appropriate to silence a few warnings/errors. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs')
-rw-r--r--fs/bcachefs/buckets.c5
-rw-r--r--fs/bcachefs/extents.h8
2 files changed, 8 insertions, 5 deletions
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index 46b6406d772b..a1a4b5feadaa 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -473,8 +473,9 @@ static inline int update_replicas_list(struct btree_trans *trans,
d = trans->fs_usage_deltas;
n = (void *) d->d + d->used;
n->delta = sectors;
- memcpy((void *) n + offsetof(struct replicas_delta, r),
- r, replicas_entry_bytes(r));
+ unsafe_memcpy((void *) n + offsetof(struct replicas_delta, r),
+ r, replicas_entry_bytes(r),
+ "flexible array member embedded in strcuct with padding");
bch2_replicas_entry_sort(&n->r);
d->used += b;
return 0;
diff --git a/fs/bcachefs/extents.h b/fs/bcachefs/extents.h
index 7ee8d031bb6c..db1863165d62 100644
--- a/fs/bcachefs/extents.h
+++ b/fs/bcachefs/extents.h
@@ -642,9 +642,11 @@ static inline void bch2_bkey_append_ptr(struct bkey_i *k, struct bch_extent_ptr
ptr.type = 1 << BCH_EXTENT_ENTRY_ptr;
- memcpy((void *) &k->v + bkey_val_bytes(&k->k),
- &ptr,
- sizeof(ptr));
+ unsafe_memcpy((void *) &k->v + bkey_val_bytes(&k->k),
+ &ptr,
+ sizeof(ptr),
+ "Our memcpy target is relative to a zero size array ,"
+ "compiler bounds checking doesn't work here");
k->k.u64s++;
break;
default: