Commit 9d6b14cd authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'flex-array-transformations-6.6-rc1' of...

Merge tag 'flex-array-transformations-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux

Pull flexible-array updates from Gustavo A. R. Silva.

* tag 'flex-array-transformations-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux:
  fs: omfs: Use flexible-array member in struct omfs_extent
  sparc: openpromio: Address -Warray-bounds warning
  reiserfs: Replace one-element array with flexible-array member
parents eaf9f464 4d8cbf6d
...@@ -10,10 +10,9 @@ ...@@ -10,10 +10,9 @@
* were chosen to be exactly equal to the SunOS equivalents. * were chosen to be exactly equal to the SunOS equivalents.
*/ */
struct openpromio struct openpromio {
{
unsigned int oprom_size; /* Actual size of the oprom_array. */ unsigned int oprom_size; /* Actual size of the oprom_array. */
char oprom_array[1]; /* Holds property names and values. */ char oprom_array[]; /* Holds property names and values. */
}; };
#define OPROMMAXPARAM 4096 /* Maximum size of oprom_array. */ #define OPROMMAXPARAM 4096 /* Maximum size of oprom_array. */
......
...@@ -14,7 +14,7 @@ static u32 omfs_max_extents(struct omfs_sb_info *sbi, int offset) ...@@ -14,7 +14,7 @@ static u32 omfs_max_extents(struct omfs_sb_info *sbi, int offset)
{ {
return (sbi->s_sys_blocksize - offset - return (sbi->s_sys_blocksize - offset -
sizeof(struct omfs_extent)) / sizeof(struct omfs_extent)) /
sizeof(struct omfs_extent_entry) + 1; sizeof(struct omfs_extent_entry);
} }
void omfs_make_empty_table(struct buffer_head *bh, int offset) void omfs_make_empty_table(struct buffer_head *bh, int offset)
...@@ -24,8 +24,8 @@ void omfs_make_empty_table(struct buffer_head *bh, int offset) ...@@ -24,8 +24,8 @@ void omfs_make_empty_table(struct buffer_head *bh, int offset)
oe->e_next = ~cpu_to_be64(0ULL); oe->e_next = ~cpu_to_be64(0ULL);
oe->e_extent_count = cpu_to_be32(1), oe->e_extent_count = cpu_to_be32(1),
oe->e_fill = cpu_to_be32(0x22), oe->e_fill = cpu_to_be32(0x22),
oe->e_entry.e_cluster = ~cpu_to_be64(0ULL); oe->e_entry[0].e_cluster = ~cpu_to_be64(0ULL);
oe->e_entry.e_blocks = ~cpu_to_be64(0ULL); oe->e_entry[0].e_blocks = ~cpu_to_be64(0ULL);
} }
int omfs_shrink_inode(struct inode *inode) int omfs_shrink_inode(struct inode *inode)
...@@ -68,7 +68,7 @@ int omfs_shrink_inode(struct inode *inode) ...@@ -68,7 +68,7 @@ int omfs_shrink_inode(struct inode *inode)
last = next; last = next;
next = be64_to_cpu(oe->e_next); next = be64_to_cpu(oe->e_next);
entry = &oe->e_entry; entry = oe->e_entry;
/* ignore last entry as it is the terminator */ /* ignore last entry as it is the terminator */
for (; extent_count > 1; extent_count--) { for (; extent_count > 1; extent_count--) {
...@@ -117,7 +117,7 @@ static int omfs_grow_extent(struct inode *inode, struct omfs_extent *oe, ...@@ -117,7 +117,7 @@ static int omfs_grow_extent(struct inode *inode, struct omfs_extent *oe,
u64 *ret_block) u64 *ret_block)
{ {
struct omfs_extent_entry *terminator; struct omfs_extent_entry *terminator;
struct omfs_extent_entry *entry = &oe->e_entry; struct omfs_extent_entry *entry = oe->e_entry;
struct omfs_sb_info *sbi = OMFS_SB(inode->i_sb); struct omfs_sb_info *sbi = OMFS_SB(inode->i_sb);
u32 extent_count = be32_to_cpu(oe->e_extent_count); u32 extent_count = be32_to_cpu(oe->e_extent_count);
u64 new_block = 0; u64 new_block = 0;
...@@ -245,7 +245,7 @@ static int omfs_get_block(struct inode *inode, sector_t block, ...@@ -245,7 +245,7 @@ static int omfs_get_block(struct inode *inode, sector_t block,
extent_count = be32_to_cpu(oe->e_extent_count); extent_count = be32_to_cpu(oe->e_extent_count);
next = be64_to_cpu(oe->e_next); next = be64_to_cpu(oe->e_next);
entry = &oe->e_entry; entry = oe->e_entry;
if (extent_count > max_extents) if (extent_count > max_extents)
goto out_brelse; goto out_brelse;
......
...@@ -77,7 +77,7 @@ struct omfs_extent { ...@@ -77,7 +77,7 @@ struct omfs_extent {
__be64 e_next; /* next extent table location */ __be64 e_next; /* next extent table location */
__be32 e_extent_count; /* total # extents in this table */ __be32 e_extent_count; /* total # extents in this table */
__be32 e_fill; __be32 e_fill;
struct omfs_extent_entry e_entry; /* start of extent entries */ struct omfs_extent_entry e_entry[]; /* start of extent entries */
}; };
#endif #endif
...@@ -2252,8 +2252,9 @@ static int get_virtual_node_size(struct super_block *sb, struct buffer_head *bh) ...@@ -2252,8 +2252,9 @@ static int get_virtual_node_size(struct super_block *sb, struct buffer_head *bh)
return sizeof(struct virtual_node) + return sizeof(struct virtual_node) +
max(max_num_of_items * sizeof(struct virtual_item), max(max_num_of_items * sizeof(struct virtual_item),
sizeof(struct virtual_item) + sizeof(struct direntry_uarea) + sizeof(struct virtual_item) +
(max_num_of_entries - 1) * sizeof(__u16)); struct_size_t(struct direntry_uarea, entry_sizes,
max_num_of_entries));
} }
/* /*
......
...@@ -2373,7 +2373,7 @@ struct virtual_node { ...@@ -2373,7 +2373,7 @@ struct virtual_node {
struct direntry_uarea { struct direntry_uarea {
int flags; int flags;
__u16 entry_count; __u16 entry_count;
__u16 entry_sizes[1]; __u16 entry_sizes[];
} __attribute__ ((__packed__)); } __attribute__ ((__packed__));
/*************************************************************************** /***************************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment