Hi all, Today's linux-next merge of the nfsd tree got a conflict in fs/nfsd/nfs4acl.c between commit 4ac7249ea5a0 ("nfsd: use get_acl and ->set_acl") from Linus' tree and commit 3554116d3aae ("nfsd4: simplify xdr encoding of nfsv4 names") from the nfsd tree. I fixed it up (see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc fs/nfsd/nfs4acl.c index 649ad7cf2204,eea24c9a561d..000000000000 --- a/fs/nfsd/nfs4acl.c +++ b/fs/nfsd/nfs4acl.c @@@ -37,13 -37,9 +37,14 @@@ #include <linux/slab.h> #include <linux/nfs_fs.h> #include <linux/export.h> +#include "nfsfh.h" + #include "nfsd.h" #include "acl.h" +#include "vfs.h" +#define NFS4_ACL_TYPE_DEFAULT 0x01 +#define NFS4_ACL_DIR 0x02 +#define NFS4_ACL_OWNER 0x04 /* mode bit translations: */ #define NFS4_READ_MODE (NFS4_ACE_READ_DATA) @@@ -916,17 -849,26 +917,22 @@@ nfs4_acl_get_whotype(char *p, u32 len return NFS4_ACL_WHO_NAMED; } - int - nfs4_acl_write_who(int who, char *p) + __be32 nfs4_acl_write_who(int who, __be32 **p, int *len) { int i; + int bytes; for (i = 0; i < ARRAY_SIZE(s2t_map); i++) { - if (s2t_map[i].type == who) { - memcpy(p, s2t_map[i].string, s2t_map[i].stringlen); - return s2t_map[i].stringlen; - } + if (s2t_map[i].type != who) + continue; + bytes = 4 + (XDR_QUADLEN(s2t_map[i].stringlen) << 2); + if (bytes > *len) + return nfserr_resource; + *p = xdr_encode_opaque(*p, s2t_map[i].string, + s2t_map[i].stringlen); + *len -= bytes; + return 0; } - BUG(); + WARN_ON_ONCE(1); return -1; } - -EXPORT_SYMBOL(nfs4_acl_new); -EXPORT_SYMBOL(nfs4_acl_get_whotype); -EXPORT_SYMBOL(nfs4_acl_write_who);
Attachment:
pgpie8I_bC3pi.pgp
Description: PGP signature