mirror of
https://github.com/versity/scoutfs.git
synced 2026-07-19 22:42:40 +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:
+2
-2
@@ -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)
|
||||
@@ -2210,7 +2210,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);
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
+4
-4
@@ -143,7 +143,7 @@ struct cached_item {
|
||||
unsigned int val_len;
|
||||
struct scoutfs_key key;
|
||||
u64 seq;
|
||||
char val[0];
|
||||
char val[];
|
||||
};
|
||||
|
||||
#define CACHED_ITEM_ALIGN 8
|
||||
@@ -421,7 +421,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);
|
||||
|
||||
@@ -1996,7 +1996,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);
|
||||
@@ -2313,7 +2313,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);
|
||||
|
||||
+2
-2
@@ -172,7 +172,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)
|
||||
@@ -764,7 +764,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