summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-10-06 13:47:31 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-18 18:24:50 -0400
commit008b8b31e3d007b0848f390f01112d31b7a1c5d4 (patch)
tree7e6b60872d422b40529b57041cee5327de01666f
parent025099e95fa75ec5780db4b8df7164014f38ca67 (diff)
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>
-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: