Commit fd47d3e1 authored by Behan Webster's avatar Behan Webster Committed by Theodore Ts'o

jbd2: remove VLAIS usage from JBD2 code

The use of variable length arrays in structs (VLAIS) in the Linux Kernel code
precludes the use of compilers which don't implement VLAIS (for instance the
Clang compiler). Since ctx is always a 32-bit CRC, hard coding a size of 4
bytes accomplishes the same thing without the use of VLAIS. This is the same
technique already employed in fs/ext4/ext4.h
Signed-off-by: default avatarMark Charlebois <charlebm@gmail.com>
Signed-off-by: default avatarBehan Webster <behanw@converseincode.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 37be2f59
...@@ -1302,15 +1302,21 @@ static inline int jbd_space_needed(journal_t *journal) ...@@ -1302,15 +1302,21 @@ static inline int jbd_space_needed(journal_t *journal)
extern int jbd_blocks_per_page(struct inode *inode); extern int jbd_blocks_per_page(struct inode *inode);
/* JBD uses a CRC32 checksum */
#define JBD_MAX_CHECKSUM_SIZE 4
static inline u32 jbd2_chksum(journal_t *journal, u32 crc, static inline u32 jbd2_chksum(journal_t *journal, u32 crc,
const void *address, unsigned int length) const void *address, unsigned int length)
{ {
struct { struct {
struct shash_desc shash; struct shash_desc shash;
char ctx[crypto_shash_descsize(journal->j_chksum_driver)]; char ctx[JBD_MAX_CHECKSUM_SIZE];
} desc; } desc;
int err; int err;
BUG_ON(crypto_shash_descsize(journal->j_chksum_driver) >
JBD_MAX_CHECKSUM_SIZE);
desc.shash.tfm = journal->j_chksum_driver; desc.shash.tfm = journal->j_chksum_driver;
desc.shash.flags = 0; desc.shash.flags = 0;
*(u32 *)desc.ctx = crc; *(u32 *)desc.ctx = crc;
......
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