nfs3acl.c (8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17) nfs3acl.c (16c663642c7ec03cd4cee5fec520bb69e97babe4)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Process version 3 NFSACL requests.
4 *
5 * Copyright (C) 2002-2003 Andreas Gruenbacher <agruen@suse.de>
6 */
7
8#include "nfsd.h"

--- 113 unchanged lines hidden (view full) ---

122 posix_acl_release(argp->acl_default);
123 return rpc_success;
124}
125
126/*
127 * XDR decode functions
128 */
129
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Process version 3 NFSACL requests.
4 *
5 * Copyright (C) 2002-2003 Andreas Gruenbacher <agruen@suse.de>
6 */
7
8#include "nfsd.h"

--- 113 unchanged lines hidden (view full) ---

122 posix_acl_release(argp->acl_default);
123 return rpc_success;
124}
125
126/*
127 * XDR decode functions
128 */
129
130static int nfs3svc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p)
130static int
131nfs3svc_decode_getaclargs(struct svc_rqst *rqstp, struct xdr_stream *xdr)
131{
132{
132 struct xdr_stream *xdr = &rqstp->rq_arg_stream;
133 struct nfsd3_getaclargs *args = rqstp->rq_argp;
134
135 if (!svcxdr_decode_nfs_fh3(xdr, &args->fh))
136 return 0;
137 if (xdr_stream_decode_u32(xdr, &args->mask) < 0)
138 return 0;
139
140 return 1;
141}
142
133 struct nfsd3_getaclargs *args = rqstp->rq_argp;
134
135 if (!svcxdr_decode_nfs_fh3(xdr, &args->fh))
136 return 0;
137 if (xdr_stream_decode_u32(xdr, &args->mask) < 0)
138 return 0;
139
140 return 1;
141}
142
143static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p)
143static int
144nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, struct xdr_stream *xdr)
144{
145{
145 struct xdr_stream *xdr = &rqstp->rq_arg_stream;
146 struct nfsd3_setaclargs *argp = rqstp->rq_argp;
147
148 if (!svcxdr_decode_nfs_fh3(xdr, &argp->fh))
149 return 0;
150 if (xdr_stream_decode_u32(xdr, &argp->mask) < 0)
151 return 0;
152 if (argp->mask & ~NFS_ACL_MASK)
153 return 0;

--- 13 unchanged lines hidden (view full) ---

167
168/* GETACL */
169static int nfs3svc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p)
170{
171 struct xdr_stream *xdr = &rqstp->rq_res_stream;
172 struct nfsd3_getaclres *resp = rqstp->rq_resp;
173 struct dentry *dentry = resp->fh.fh_dentry;
174 struct kvec *head = rqstp->rq_res.head;
146 struct nfsd3_setaclargs *argp = rqstp->rq_argp;
147
148 if (!svcxdr_decode_nfs_fh3(xdr, &argp->fh))
149 return 0;
150 if (xdr_stream_decode_u32(xdr, &argp->mask) < 0)
151 return 0;
152 if (argp->mask & ~NFS_ACL_MASK)
153 return 0;

--- 13 unchanged lines hidden (view full) ---

167
168/* GETACL */
169static int nfs3svc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p)
170{
171 struct xdr_stream *xdr = &rqstp->rq_res_stream;
172 struct nfsd3_getaclres *resp = rqstp->rq_resp;
173 struct dentry *dentry = resp->fh.fh_dentry;
174 struct kvec *head = rqstp->rq_res.head;
175 struct inode *inode = d_inode(dentry);
175 struct inode *inode;
176 unsigned int base;
177 int n;
178 int w;
179
180 if (!svcxdr_encode_nfsstat3(xdr, resp->status))
181 return 0;
182 switch (resp->status) {
183 case nfs_ok:
176 unsigned int base;
177 int n;
178 int w;
179
180 if (!svcxdr_encode_nfsstat3(xdr, resp->status))
181 return 0;
182 switch (resp->status) {
183 case nfs_ok:
184 inode = d_inode(dentry);
184 if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh))
185 return 0;
186 if (xdr_stream_encode_u32(xdr, resp->mask) < 0)
187 return 0;
188
189 base = (char *)xdr->p - (char *)head->iov_base;
190
191 rqstp->rq_res.page_len = w = nfsacl_size(

--- 101 unchanged lines hidden ---
185 if (!svcxdr_encode_post_op_attr(rqstp, xdr, &resp->fh))
186 return 0;
187 if (xdr_stream_encode_u32(xdr, resp->mask) < 0)
188 return 0;
189
190 base = (char *)xdr->p - (char *)head->iov_base;
191
192 rqstp->rq_res.page_len = w = nfsacl_size(

--- 101 unchanged lines hidden ---