On Wed, 2013-07-10 at 18:26 +0200, Jan Kara wrote: > On Wed 10-07-13 10:55:38, Ben Myers wrote: > > Hey Chandra, <snip> > > > diff --git a/fs/quota/quota.c b/fs/quota/quota.c > > > index c7314f1..ae6526e 100644 > > > --- a/fs/quota/quota.c > > > +++ b/fs/quota/quota.c > > > @@ -207,12 +207,57 @@ static int quota_setxstate(struct super_block *sb, int cmd, void __user *addr) > > > static int quota_getxstate(struct super_block *sb, void __user *addr) > > > { > > > struct fs_quota_stat fqs; > > > - int ret; > > > + struct fs_quota_stat_v1 fqs_v1; > > > + int ret, size; > > > + void *fqsp; > > > > > > if (!sb->s_qcop->get_xstate) > > > return -ENOSYS; > > > + > > > + memset(&fqs, 0, sizeof(struct fs_quota_stat)); > > > + if (copy_from_user(&fqs, addr, 1)) /* just get the version */ > > > + return -EFAULT; > > > + > > > + switch (fqs.qs_version) { > > > + case FS_QSTAT_VERSION_2: > > > + size = FS_QSTAT_V2_SIZE; > > > + break; > > > + default: > > > + fqs.qs_version = FS_QSTAT_VERSION; > > > + /* fallthrough */ > > > + case FS_QSTAT_VERSION: > > > + size = FS_QSTAT_V1_SIZE; > > > + break; > > > + } > Guys, you cannot really do this. If anyone is using getxstate() with > uninitialized buffer (which is fine so far), you cannot suddently start to > rely on the contents of qs_version field. That's ABI (and even API) > breakage. Agree, it is a API breakage. Will fix it by adding a new quotactl value as you suggest. Does #define Q_XGETQSTAT2 XQM_CMD(8) sound good ? > > Unless I'm missing something, the only clean way is to use new quotactl > value for the interface with version field used for input as well. > > Honza > _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs