From a4777b2cbcc3860ad1024aae9eed81b8e4d0e745 Mon Sep 17 00:00:00 2001 From: anserper Date: Thu, 11 Jun 2009 00:45:53 +0000 Subject: [PATCH] b=19544 i=Robert Read i=ZhiYong Tian get rid of variable-length arrays in the quota format code --- lustre/lvfs/lustre_quota_fmt.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/lustre/lvfs/lustre_quota_fmt.c b/lustre/lvfs/lustre_quota_fmt.c index 11e7824..83638d4 100644 --- a/lustre/lvfs/lustre_quota_fmt.c +++ b/lustre/lvfs/lustre_quota_fmt.c @@ -581,9 +581,9 @@ static int lustre_write_dquot(struct lustre_dquot *dquot, loff_t offset; ssize_t ret; int dqblk_sz = lustre_disk_dqblk_sz[version]; - char ddquot[dqblk_sz]; + struct lustre_disk_dqblk_v2 ddquot; - ret = mem2diskdqb(ddquot, &dquot->dq_dqb, dquot->dq_id, version); + ret = mem2diskdqb(&ddquot, &dquot->dq_dqb, dquot->dq_id, version); if (ret < 0) return ret; @@ -600,12 +600,11 @@ static int lustre_write_dquot(struct lustre_dquot *dquot, * be treated as an empty place by the rest of the code. Format change * would be definitely cleaner but the problems probably are not worth * it */ - if (!memcmp((char *)&emptydquot[version], ddquot, dqblk_sz)) - ((struct lustre_disk_dqblk_v2 *)ddquot)->dqb_itime = - cpu_to_le64(1); + if (!memcmp((char *)&emptydquot[version], (char *)&ddquot, dqblk_sz)) + ddquot.dqb_itime = cpu_to_le64(1); fs = get_fs(); set_fs(KERNEL_DS); - ret = filp->f_op->write(filp, ddquot, + ret = filp->f_op->write(filp, (char *)&ddquot, dqblk_sz, &offset); set_fs(fs); if (ret != dqblk_sz) { @@ -856,29 +855,28 @@ int lustre_read_dquot(struct lustre_dquot *dquot) memset(&dquot->dq_dqb, 0, sizeof(struct lustre_mem_dqblk)); ret = offset; } else { - char ddquot[dqblk_sz]; + struct lustre_disk_dqblk_v2 ddquot; dquot->dq_off = offset; fs = get_fs(); set_fs(KERNEL_DS); - if ((ret = filp->f_op->read(filp, ddquot, dqblk_sz, &offset)) != - dqblk_sz) { + if ((ret = filp->f_op->read(filp, (char *)&ddquot, + dqblk_sz, &offset)) != dqblk_sz) { if (ret >= 0) ret = -EIO; CDEBUG(D_ERROR, "VFS: Error while reading quota structure for id " "%u.\n", dquot->dq_id); - memset(ddquot, 0, dqblk_sz); + memset((char *)&ddquot, 0, dqblk_sz); } else { ret = 0; /* We need to escape back all-zero structure */ if (!memcmp((char *)&fakedquot[version], - ddquot, dqblk_sz)) - ((struct lustre_disk_dqblk_v2 *)ddquot)->dqb_itime = - cpu_to_le64(0); + (char *)&ddquot, dqblk_sz)) + ddquot.dqb_itime = cpu_to_le64(0); } set_fs(fs); - disk2memdqb(&dquot->dq_dqb, ddquot, version); + disk2memdqb(&dquot->dq_dqb, &ddquot, version); } return ret; -- 1.8.3.1