mirror of
https://github.com/versity/scoutfs.git
synced 2026-02-07 03:00:44 +00:00
Fix compiler warnings for flex array definitions.
Instead of defining a struct that ends with a flex array member with `val[0]`, the compiler now balks at this since technically, the spec considers this unsanitary. As a result however, we can't memcpy to `struct->val` since that's a pointer and now we're writing something of a different length (u8's in our case) into something that's of pointer size. So there we have to do the opposite, and memcpy to &struct->val[0]. Signed-off-by: Auke Kok <auke.kok@versity.com>
This commit is contained in:
@@ -2042,7 +2042,7 @@ struct merged_item {
|
||||
u64 seq;
|
||||
u8 flags;
|
||||
unsigned int val_len;
|
||||
u8 val[0];
|
||||
u8 val[];
|
||||
};
|
||||
|
||||
static inline struct merged_item *mitem_container(struct rb_node *node)
|
||||
@@ -2208,7 +2208,7 @@ static int merge_read_item(struct super_block *sb, struct scoutfs_key *key, u64
|
||||
mitem->flags = flags;
|
||||
mitem->val_len = val_len;
|
||||
if (val_len)
|
||||
memcpy(mitem->val, val, val_len);
|
||||
memcpy(&mitem->val[0], val, val_len);
|
||||
|
||||
if (found) {
|
||||
replace_mitem(rng, found, mitem);
|
||||
|
||||
@@ -30,7 +30,7 @@ struct scoutfs_btree_item_list {
|
||||
u64 seq;
|
||||
u8 flags;
|
||||
int val_len;
|
||||
u8 val[0];
|
||||
u8 val[];
|
||||
};
|
||||
|
||||
int scoutfs_btree_lookup(struct super_block *sb,
|
||||
|
||||
@@ -148,7 +148,7 @@ struct cached_item {
|
||||
unsigned int val_len;
|
||||
struct scoutfs_key key;
|
||||
u64 seq;
|
||||
char val[0];
|
||||
char val[];
|
||||
};
|
||||
|
||||
#define CACHED_ITEM_ALIGN 8
|
||||
@@ -426,7 +426,7 @@ static struct cached_item *alloc_item(struct cached_page *pg,
|
||||
item->seq = seq;
|
||||
|
||||
if (val_len)
|
||||
memcpy(item->val, val, val_len);
|
||||
memcpy(&item->val[0], val, val_len);
|
||||
|
||||
update_pg_max_seq(pg, item);
|
||||
|
||||
@@ -2053,7 +2053,7 @@ int scoutfs_item_update(struct super_block *sb, struct scoutfs_key *key,
|
||||
|
||||
if (val_len <= found->val_len) {
|
||||
if (val_len)
|
||||
memcpy(found->val, val, val_len);
|
||||
memcpy(&found->val[0], val, val_len);
|
||||
if (val_len < found->val_len)
|
||||
pg->erased_bytes += item_val_bytes(found->val_len) -
|
||||
item_val_bytes(val_len);
|
||||
@@ -2370,7 +2370,7 @@ int scoutfs_item_write_dirty(struct super_block *sb)
|
||||
lst->seq = item->seq;
|
||||
lst->flags = item->deletion ? SCOUTFS_ITEM_FLAG_DELETION : 0;
|
||||
lst->val_len = item->val_len;
|
||||
memcpy(lst->val, item->val, item->val_len);
|
||||
memcpy(&lst->val[0], item->val, item->val_len);
|
||||
}
|
||||
|
||||
spin_lock(&cinf->dirty_lock);
|
||||
|
||||
@@ -171,7 +171,7 @@ struct wkic_item {
|
||||
u64 seq;
|
||||
unsigned int val_len;
|
||||
u8 flags;
|
||||
u8 val[0] __aligned(ARCH_KMALLOC_MINALIGN); /* totls have native structs */
|
||||
u8 val[] __aligned(ARCH_KMALLOC_MINALIGN); /* totls have native structs */
|
||||
};
|
||||
|
||||
static struct wkic_item *witem_container(struct rb_node *node)
|
||||
@@ -763,7 +763,7 @@ static void fill_page_items(struct super_block *sb, struct wkic_page *wpage, str
|
||||
pg_item->val_len = witem->val_len;
|
||||
pg_item->flags = witem->flags;
|
||||
if (witem->val_len)
|
||||
memcpy(pg_item->val, witem->val, witem->val_len);
|
||||
memcpy(&pg_item->val[0], witem->val, witem->val_len);
|
||||
|
||||
/* always inserting greatest item into page */
|
||||
rb_link_node(&pg_item->node, parent, node);
|
||||
|
||||
Reference in New Issue
Block a user