Loading fs/nfsd/nfs4proc.c +1 −1 Original line number Diff line number Diff line Loading @@ -623,7 +623,7 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, case NF4LNK: status = nfsd_symlink(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, create->cr_linkname, create->cr_data, &resfh, &create->cr_iattr); break; Loading fs/nfsd/nfs4xdr.c +7 −8 Original line number Diff line number Diff line Loading @@ -598,20 +598,19 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create switch (create->cr_type) { case NF4LNK: READ_BUF(4); create->cr_linklen = be32_to_cpup(p++); READ_BUF(create->cr_linklen); create->cr_datalen = be32_to_cpup(p++); READ_BUF(create->cr_datalen); /* * The VFS will want a null-terminated string, and * null-terminating in place isn't safe since this might * end on a page boundary: */ create->cr_linkname = kmalloc(create->cr_linklen + 1, GFP_KERNEL); if (!create->cr_linkname) create->cr_data = kmalloc(create->cr_datalen + 1, GFP_KERNEL); if (!create->cr_data) return nfserr_jukebox; memcpy(create->cr_linkname, p, create->cr_linklen); create->cr_linkname[create->cr_linklen] = '\0'; defer_free(argp, kfree, create->cr_linkname); memcpy(create->cr_data, p, create->cr_datalen); create->cr_data[create->cr_datalen] = '\0'; defer_free(argp, kfree, create->cr_data); break; case NF4BLK: case NF4CHR: Loading fs/nfsd/xdr4.h +4 −4 Original line number Diff line number Diff line Loading @@ -107,8 +107,8 @@ struct nfsd4_create { u32 cr_type; /* request */ union { /* request */ struct { u32 namelen; char *name; u32 datalen; char *data; } link; /* NF4LNK */ struct { u32 specdata1; Loading @@ -121,8 +121,8 @@ struct nfsd4_create { struct nfs4_acl *cr_acl; struct xdr_netobj cr_label; }; #define cr_linklen u.link.namelen #define cr_linkname u.link.name #define cr_datalen u.link.datalen #define cr_data u.link.data #define cr_specdata1 u.dev.specdata1 #define cr_specdata2 u.dev.specdata2 Loading Loading
fs/nfsd/nfs4proc.c +1 −1 Original line number Diff line number Diff line Loading @@ -623,7 +623,7 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, case NF4LNK: status = nfsd_symlink(rqstp, &cstate->current_fh, create->cr_name, create->cr_namelen, create->cr_linkname, create->cr_data, &resfh, &create->cr_iattr); break; Loading
fs/nfsd/nfs4xdr.c +7 −8 Original line number Diff line number Diff line Loading @@ -598,20 +598,19 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create switch (create->cr_type) { case NF4LNK: READ_BUF(4); create->cr_linklen = be32_to_cpup(p++); READ_BUF(create->cr_linklen); create->cr_datalen = be32_to_cpup(p++); READ_BUF(create->cr_datalen); /* * The VFS will want a null-terminated string, and * null-terminating in place isn't safe since this might * end on a page boundary: */ create->cr_linkname = kmalloc(create->cr_linklen + 1, GFP_KERNEL); if (!create->cr_linkname) create->cr_data = kmalloc(create->cr_datalen + 1, GFP_KERNEL); if (!create->cr_data) return nfserr_jukebox; memcpy(create->cr_linkname, p, create->cr_linklen); create->cr_linkname[create->cr_linklen] = '\0'; defer_free(argp, kfree, create->cr_linkname); memcpy(create->cr_data, p, create->cr_datalen); create->cr_data[create->cr_datalen] = '\0'; defer_free(argp, kfree, create->cr_data); break; case NF4BLK: case NF4CHR: Loading
fs/nfsd/xdr4.h +4 −4 Original line number Diff line number Diff line Loading @@ -107,8 +107,8 @@ struct nfsd4_create { u32 cr_type; /* request */ union { /* request */ struct { u32 namelen; char *name; u32 datalen; char *data; } link; /* NF4LNK */ struct { u32 specdata1; Loading @@ -121,8 +121,8 @@ struct nfsd4_create { struct nfs4_acl *cr_acl; struct xdr_netobj cr_label; }; #define cr_linklen u.link.namelen #define cr_linkname u.link.name #define cr_datalen u.link.datalen #define cr_data u.link.data #define cr_specdata1 u.dev.specdata1 #define cr_specdata2 u.dev.specdata2 Loading