diff options
Diffstat (limited to 'fs/nfsd/nfsxdr.c')
-rw-r--r-- | fs/nfsd/nfsxdr.c | 115 |
1 files changed, 55 insertions, 60 deletions
diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 3f14a17eaa6e..56ebb1443e0e 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c | |||
@@ -37,8 +37,8 @@ static u32 nfs_ftypes[] = { | |||
37 | /* | 37 | /* |
38 | * XDR functions for basic NFS types | 38 | * XDR functions for basic NFS types |
39 | */ | 39 | */ |
40 | static u32 * | 40 | static __be32 * |
41 | decode_fh(u32 *p, struct svc_fh *fhp) | 41 | decode_fh(__be32 *p, struct svc_fh *fhp) |
42 | { | 42 | { |
43 | fh_init(fhp, NFS_FHSIZE); | 43 | fh_init(fhp, NFS_FHSIZE); |
44 | memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE); | 44 | memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE); |
@@ -50,13 +50,13 @@ decode_fh(u32 *p, struct svc_fh *fhp) | |||
50 | } | 50 | } |
51 | 51 | ||
52 | /* Helper function for NFSv2 ACL code */ | 52 | /* Helper function for NFSv2 ACL code */ |
53 | u32 *nfs2svc_decode_fh(u32 *p, struct svc_fh *fhp) | 53 | __be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp) |
54 | { | 54 | { |
55 | return decode_fh(p, fhp); | 55 | return decode_fh(p, fhp); |
56 | } | 56 | } |
57 | 57 | ||
58 | static inline u32 * | 58 | static inline __be32 * |
59 | encode_fh(u32 *p, struct svc_fh *fhp) | 59 | encode_fh(__be32 *p, struct svc_fh *fhp) |
60 | { | 60 | { |
61 | memcpy(p, &fhp->fh_handle.fh_base, NFS_FHSIZE); | 61 | memcpy(p, &fhp->fh_handle.fh_base, NFS_FHSIZE); |
62 | return p + (NFS_FHSIZE>> 2); | 62 | return p + (NFS_FHSIZE>> 2); |
@@ -66,8 +66,8 @@ encode_fh(u32 *p, struct svc_fh *fhp) | |||
66 | * Decode a file name and make sure that the path contains | 66 | * Decode a file name and make sure that the path contains |
67 | * no slashes or null bytes. | 67 | * no slashes or null bytes. |
68 | */ | 68 | */ |
69 | static inline u32 * | 69 | static inline __be32 * |
70 | decode_filename(u32 *p, char **namp, int *lenp) | 70 | decode_filename(__be32 *p, char **namp, int *lenp) |
71 | { | 71 | { |
72 | char *name; | 72 | char *name; |
73 | int i; | 73 | int i; |
@@ -82,8 +82,8 @@ decode_filename(u32 *p, char **namp, int *lenp) | |||
82 | return p; | 82 | return p; |
83 | } | 83 | } |
84 | 84 | ||
85 | static inline u32 * | 85 | static inline __be32 * |
86 | decode_pathname(u32 *p, char **namp, int *lenp) | 86 | decode_pathname(__be32 *p, char **namp, int *lenp) |
87 | { | 87 | { |
88 | char *name; | 88 | char *name; |
89 | int i; | 89 | int i; |
@@ -98,8 +98,8 @@ decode_pathname(u32 *p, char **namp, int *lenp) | |||
98 | return p; | 98 | return p; |
99 | } | 99 | } |
100 | 100 | ||
101 | static inline u32 * | 101 | static inline __be32 * |
102 | decode_sattr(u32 *p, struct iattr *iap) | 102 | decode_sattr(__be32 *p, struct iattr *iap) |
103 | { | 103 | { |
104 | u32 tmp, tmp1; | 104 | u32 tmp, tmp1; |
105 | 105 | ||
@@ -151,8 +151,8 @@ decode_sattr(u32 *p, struct iattr *iap) | |||
151 | return p; | 151 | return p; |
152 | } | 152 | } |
153 | 153 | ||
154 | static u32 * | 154 | static __be32 * |
155 | encode_fattr(struct svc_rqst *rqstp, u32 *p, struct svc_fh *fhp, | 155 | encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp, |
156 | struct kstat *stat) | 156 | struct kstat *stat) |
157 | { | 157 | { |
158 | struct dentry *dentry = fhp->fh_dentry; | 158 | struct dentry *dentry = fhp->fh_dentry; |
@@ -195,7 +195,7 @@ encode_fattr(struct svc_rqst *rqstp, u32 *p, struct svc_fh *fhp, | |||
195 | } | 195 | } |
196 | 196 | ||
197 | /* Helper function for NFSv2 ACL code */ | 197 | /* Helper function for NFSv2 ACL code */ |
198 | u32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, u32 *p, struct svc_fh *fhp) | 198 | __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp) |
199 | { | 199 | { |
200 | struct kstat stat; | 200 | struct kstat stat; |
201 | vfs_getattr(fhp->fh_export->ex_mnt, fhp->fh_dentry, &stat); | 201 | vfs_getattr(fhp->fh_export->ex_mnt, fhp->fh_dentry, &stat); |
@@ -206,13 +206,13 @@ u32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, u32 *p, struct svc_fh *fhp) | |||
206 | * XDR decode functions | 206 | * XDR decode functions |
207 | */ | 207 | */ |
208 | int | 208 | int |
209 | nfssvc_decode_void(struct svc_rqst *rqstp, u32 *p, void *dummy) | 209 | nfssvc_decode_void(struct svc_rqst *rqstp, __be32 *p, void *dummy) |
210 | { | 210 | { |
211 | return xdr_argsize_check(rqstp, p); | 211 | return xdr_argsize_check(rqstp, p); |
212 | } | 212 | } |
213 | 213 | ||
214 | int | 214 | int |
215 | nfssvc_decode_fhandle(struct svc_rqst *rqstp, u32 *p, struct nfsd_fhandle *args) | 215 | nfssvc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p, struct nfsd_fhandle *args) |
216 | { | 216 | { |
217 | if (!(p = decode_fh(p, &args->fh))) | 217 | if (!(p = decode_fh(p, &args->fh))) |
218 | return 0; | 218 | return 0; |
@@ -220,7 +220,7 @@ nfssvc_decode_fhandle(struct svc_rqst *rqstp, u32 *p, struct nfsd_fhandle *args) | |||
220 | } | 220 | } |
221 | 221 | ||
222 | int | 222 | int |
223 | nfssvc_decode_sattrargs(struct svc_rqst *rqstp, u32 *p, | 223 | nfssvc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p, |
224 | struct nfsd_sattrargs *args) | 224 | struct nfsd_sattrargs *args) |
225 | { | 225 | { |
226 | if (!(p = decode_fh(p, &args->fh)) | 226 | if (!(p = decode_fh(p, &args->fh)) |
@@ -231,7 +231,7 @@ nfssvc_decode_sattrargs(struct svc_rqst *rqstp, u32 *p, | |||
231 | } | 231 | } |
232 | 232 | ||
233 | int | 233 | int |
234 | nfssvc_decode_diropargs(struct svc_rqst *rqstp, u32 *p, | 234 | nfssvc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p, |
235 | struct nfsd_diropargs *args) | 235 | struct nfsd_diropargs *args) |
236 | { | 236 | { |
237 | if (!(p = decode_fh(p, &args->fh)) | 237 | if (!(p = decode_fh(p, &args->fh)) |
@@ -242,7 +242,7 @@ nfssvc_decode_diropargs(struct svc_rqst *rqstp, u32 *p, | |||
242 | } | 242 | } |
243 | 243 | ||
244 | int | 244 | int |
245 | nfssvc_decode_readargs(struct svc_rqst *rqstp, u32 *p, | 245 | nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p, |
246 | struct nfsd_readargs *args) | 246 | struct nfsd_readargs *args) |
247 | { | 247 | { |
248 | unsigned int len; | 248 | unsigned int len; |
@@ -254,19 +254,18 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, u32 *p, | |||
254 | len = args->count = ntohl(*p++); | 254 | len = args->count = ntohl(*p++); |
255 | p++; /* totalcount - unused */ | 255 | p++; /* totalcount - unused */ |
256 | 256 | ||
257 | if (len > NFSSVC_MAXBLKSIZE) | 257 | if (len > NFSSVC_MAXBLKSIZE_V2) |
258 | len = NFSSVC_MAXBLKSIZE; | 258 | len = NFSSVC_MAXBLKSIZE_V2; |
259 | 259 | ||
260 | /* set up somewhere to store response. | 260 | /* set up somewhere to store response. |
261 | * We take pages, put them on reslist and include in iovec | 261 | * We take pages, put them on reslist and include in iovec |
262 | */ | 262 | */ |
263 | v=0; | 263 | v=0; |
264 | while (len > 0) { | 264 | while (len > 0) { |
265 | pn=rqstp->rq_resused; | 265 | pn = rqstp->rq_resused++; |
266 | svc_take_page(rqstp); | 266 | rqstp->rq_vec[v].iov_base = page_address(rqstp->rq_respages[pn]); |
267 | args->vec[v].iov_base = page_address(rqstp->rq_respages[pn]); | 267 | rqstp->rq_vec[v].iov_len = len < PAGE_SIZE?len:PAGE_SIZE; |
268 | args->vec[v].iov_len = len < PAGE_SIZE?len:PAGE_SIZE; | 268 | len -= rqstp->rq_vec[v].iov_len; |
269 | len -= args->vec[v].iov_len; | ||
270 | v++; | 269 | v++; |
271 | } | 270 | } |
272 | args->vlen = v; | 271 | args->vlen = v; |
@@ -274,7 +273,7 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, u32 *p, | |||
274 | } | 273 | } |
275 | 274 | ||
276 | int | 275 | int |
277 | nfssvc_decode_writeargs(struct svc_rqst *rqstp, u32 *p, | 276 | nfssvc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p, |
278 | struct nfsd_writeargs *args) | 277 | struct nfsd_writeargs *args) |
279 | { | 278 | { |
280 | unsigned int len; | 279 | unsigned int len; |
@@ -286,25 +285,25 @@ nfssvc_decode_writeargs(struct svc_rqst *rqstp, u32 *p, | |||
286 | args->offset = ntohl(*p++); /* offset */ | 285 | args->offset = ntohl(*p++); /* offset */ |
287 | p++; /* totalcount */ | 286 | p++; /* totalcount */ |
288 | len = args->len = ntohl(*p++); | 287 | len = args->len = ntohl(*p++); |
289 | args->vec[0].iov_base = (void*)p; | 288 | rqstp->rq_vec[0].iov_base = (void*)p; |
290 | args->vec[0].iov_len = rqstp->rq_arg.head[0].iov_len - | 289 | rqstp->rq_vec[0].iov_len = rqstp->rq_arg.head[0].iov_len - |
291 | (((void*)p) - rqstp->rq_arg.head[0].iov_base); | 290 | (((void*)p) - rqstp->rq_arg.head[0].iov_base); |
292 | if (len > NFSSVC_MAXBLKSIZE) | 291 | if (len > NFSSVC_MAXBLKSIZE_V2) |
293 | len = NFSSVC_MAXBLKSIZE; | 292 | len = NFSSVC_MAXBLKSIZE_V2; |
294 | v = 0; | 293 | v = 0; |
295 | while (len > args->vec[v].iov_len) { | 294 | while (len > rqstp->rq_vec[v].iov_len) { |
296 | len -= args->vec[v].iov_len; | 295 | len -= rqstp->rq_vec[v].iov_len; |
297 | v++; | 296 | v++; |
298 | args->vec[v].iov_base = page_address(rqstp->rq_argpages[v]); | 297 | rqstp->rq_vec[v].iov_base = page_address(rqstp->rq_pages[v]); |
299 | args->vec[v].iov_len = PAGE_SIZE; | 298 | rqstp->rq_vec[v].iov_len = PAGE_SIZE; |
300 | } | 299 | } |
301 | args->vec[v].iov_len = len; | 300 | rqstp->rq_vec[v].iov_len = len; |
302 | args->vlen = v+1; | 301 | args->vlen = v+1; |
303 | return args->vec[0].iov_len > 0; | 302 | return rqstp->rq_vec[0].iov_len > 0; |
304 | } | 303 | } |
305 | 304 | ||
306 | int | 305 | int |
307 | nfssvc_decode_createargs(struct svc_rqst *rqstp, u32 *p, | 306 | nfssvc_decode_createargs(struct svc_rqst *rqstp, __be32 *p, |
308 | struct nfsd_createargs *args) | 307 | struct nfsd_createargs *args) |
309 | { | 308 | { |
310 | if (!(p = decode_fh(p, &args->fh)) | 309 | if (!(p = decode_fh(p, &args->fh)) |
@@ -316,7 +315,7 @@ nfssvc_decode_createargs(struct svc_rqst *rqstp, u32 *p, | |||
316 | } | 315 | } |
317 | 316 | ||
318 | int | 317 | int |
319 | nfssvc_decode_renameargs(struct svc_rqst *rqstp, u32 *p, | 318 | nfssvc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p, |
320 | struct nfsd_renameargs *args) | 319 | struct nfsd_renameargs *args) |
321 | { | 320 | { |
322 | if (!(p = decode_fh(p, &args->ffh)) | 321 | if (!(p = decode_fh(p, &args->ffh)) |
@@ -329,18 +328,17 @@ nfssvc_decode_renameargs(struct svc_rqst *rqstp, u32 *p, | |||
329 | } | 328 | } |
330 | 329 | ||
331 | int | 330 | int |
332 | nfssvc_decode_readlinkargs(struct svc_rqst *rqstp, u32 *p, struct nfsd_readlinkargs *args) | 331 | nfssvc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd_readlinkargs *args) |
333 | { | 332 | { |
334 | if (!(p = decode_fh(p, &args->fh))) | 333 | if (!(p = decode_fh(p, &args->fh))) |
335 | return 0; | 334 | return 0; |
336 | svc_take_page(rqstp); | 335 | args->buffer = page_address(rqstp->rq_respages[rqstp->rq_resused++]); |
337 | args->buffer = page_address(rqstp->rq_respages[rqstp->rq_resused-1]); | ||
338 | 336 | ||
339 | return xdr_argsize_check(rqstp, p); | 337 | return xdr_argsize_check(rqstp, p); |
340 | } | 338 | } |
341 | 339 | ||
342 | int | 340 | int |
343 | nfssvc_decode_linkargs(struct svc_rqst *rqstp, u32 *p, | 341 | nfssvc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p, |
344 | struct nfsd_linkargs *args) | 342 | struct nfsd_linkargs *args) |
345 | { | 343 | { |
346 | if (!(p = decode_fh(p, &args->ffh)) | 344 | if (!(p = decode_fh(p, &args->ffh)) |
@@ -352,7 +350,7 @@ nfssvc_decode_linkargs(struct svc_rqst *rqstp, u32 *p, | |||
352 | } | 350 | } |
353 | 351 | ||
354 | int | 352 | int |
355 | nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, u32 *p, | 353 | nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p, |
356 | struct nfsd_symlinkargs *args) | 354 | struct nfsd_symlinkargs *args) |
357 | { | 355 | { |
358 | if (!(p = decode_fh(p, &args->ffh)) | 356 | if (!(p = decode_fh(p, &args->ffh)) |
@@ -365,7 +363,7 @@ nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, u32 *p, | |||
365 | } | 363 | } |
366 | 364 | ||
367 | int | 365 | int |
368 | nfssvc_decode_readdirargs(struct svc_rqst *rqstp, u32 *p, | 366 | nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p, |
369 | struct nfsd_readdirargs *args) | 367 | struct nfsd_readdirargs *args) |
370 | { | 368 | { |
371 | if (!(p = decode_fh(p, &args->fh))) | 369 | if (!(p = decode_fh(p, &args->fh))) |
@@ -375,8 +373,7 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, u32 *p, | |||
375 | if (args->count > PAGE_SIZE) | 373 | if (args->count > PAGE_SIZE) |
376 | args->count = PAGE_SIZE; | 374 | args->count = PAGE_SIZE; |
377 | 375 | ||
378 | svc_take_page(rqstp); | 376 | args->buffer = page_address(rqstp->rq_respages[rqstp->rq_resused++]); |
379 | args->buffer = page_address(rqstp->rq_respages[rqstp->rq_resused-1]); | ||
380 | 377 | ||
381 | return xdr_argsize_check(rqstp, p); | 378 | return xdr_argsize_check(rqstp, p); |
382 | } | 379 | } |
@@ -385,13 +382,13 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, u32 *p, | |||
385 | * XDR encode functions | 382 | * XDR encode functions |
386 | */ | 383 | */ |
387 | int | 384 | int |
388 | nfssvc_encode_void(struct svc_rqst *rqstp, u32 *p, void *dummy) | 385 | nfssvc_encode_void(struct svc_rqst *rqstp, __be32 *p, void *dummy) |
389 | { | 386 | { |
390 | return xdr_ressize_check(rqstp, p); | 387 | return xdr_ressize_check(rqstp, p); |
391 | } | 388 | } |
392 | 389 | ||
393 | int | 390 | int |
394 | nfssvc_encode_attrstat(struct svc_rqst *rqstp, u32 *p, | 391 | nfssvc_encode_attrstat(struct svc_rqst *rqstp, __be32 *p, |
395 | struct nfsd_attrstat *resp) | 392 | struct nfsd_attrstat *resp) |
396 | { | 393 | { |
397 | p = encode_fattr(rqstp, p, &resp->fh, &resp->stat); | 394 | p = encode_fattr(rqstp, p, &resp->fh, &resp->stat); |
@@ -399,7 +396,7 @@ nfssvc_encode_attrstat(struct svc_rqst *rqstp, u32 *p, | |||
399 | } | 396 | } |
400 | 397 | ||
401 | int | 398 | int |
402 | nfssvc_encode_diropres(struct svc_rqst *rqstp, u32 *p, | 399 | nfssvc_encode_diropres(struct svc_rqst *rqstp, __be32 *p, |
403 | struct nfsd_diropres *resp) | 400 | struct nfsd_diropres *resp) |
404 | { | 401 | { |
405 | p = encode_fh(p, &resp->fh); | 402 | p = encode_fh(p, &resp->fh); |
@@ -408,7 +405,7 @@ nfssvc_encode_diropres(struct svc_rqst *rqstp, u32 *p, | |||
408 | } | 405 | } |
409 | 406 | ||
410 | int | 407 | int |
411 | nfssvc_encode_readlinkres(struct svc_rqst *rqstp, u32 *p, | 408 | nfssvc_encode_readlinkres(struct svc_rqst *rqstp, __be32 *p, |
412 | struct nfsd_readlinkres *resp) | 409 | struct nfsd_readlinkres *resp) |
413 | { | 410 | { |
414 | *p++ = htonl(resp->len); | 411 | *p++ = htonl(resp->len); |
@@ -416,7 +413,6 @@ nfssvc_encode_readlinkres(struct svc_rqst *rqstp, u32 *p, | |||
416 | rqstp->rq_res.page_len = resp->len; | 413 | rqstp->rq_res.page_len = resp->len; |
417 | if (resp->len & 3) { | 414 | if (resp->len & 3) { |
418 | /* need to pad the tail */ | 415 | /* need to pad the tail */ |
419 | rqstp->rq_restailpage = 0; | ||
420 | rqstp->rq_res.tail[0].iov_base = p; | 416 | rqstp->rq_res.tail[0].iov_base = p; |
421 | *p = 0; | 417 | *p = 0; |
422 | rqstp->rq_res.tail[0].iov_len = 4 - (resp->len&3); | 418 | rqstp->rq_res.tail[0].iov_len = 4 - (resp->len&3); |
@@ -425,7 +421,7 @@ nfssvc_encode_readlinkres(struct svc_rqst *rqstp, u32 *p, | |||
425 | } | 421 | } |
426 | 422 | ||
427 | int | 423 | int |
428 | nfssvc_encode_readres(struct svc_rqst *rqstp, u32 *p, | 424 | nfssvc_encode_readres(struct svc_rqst *rqstp, __be32 *p, |
429 | struct nfsd_readres *resp) | 425 | struct nfsd_readres *resp) |
430 | { | 426 | { |
431 | p = encode_fattr(rqstp, p, &resp->fh, &resp->stat); | 427 | p = encode_fattr(rqstp, p, &resp->fh, &resp->stat); |
@@ -436,7 +432,6 @@ nfssvc_encode_readres(struct svc_rqst *rqstp, u32 *p, | |||
436 | rqstp->rq_res.page_len = resp->count; | 432 | rqstp->rq_res.page_len = resp->count; |
437 | if (resp->count & 3) { | 433 | if (resp->count & 3) { |
438 | /* need to pad the tail */ | 434 | /* need to pad the tail */ |
439 | rqstp->rq_restailpage = 0; | ||
440 | rqstp->rq_res.tail[0].iov_base = p; | 435 | rqstp->rq_res.tail[0].iov_base = p; |
441 | *p = 0; | 436 | *p = 0; |
442 | rqstp->rq_res.tail[0].iov_len = 4 - (resp->count&3); | 437 | rqstp->rq_res.tail[0].iov_len = 4 - (resp->count&3); |
@@ -445,7 +440,7 @@ nfssvc_encode_readres(struct svc_rqst *rqstp, u32 *p, | |||
445 | } | 440 | } |
446 | 441 | ||
447 | int | 442 | int |
448 | nfssvc_encode_readdirres(struct svc_rqst *rqstp, u32 *p, | 443 | nfssvc_encode_readdirres(struct svc_rqst *rqstp, __be32 *p, |
449 | struct nfsd_readdirres *resp) | 444 | struct nfsd_readdirres *resp) |
450 | { | 445 | { |
451 | xdr_ressize_check(rqstp, p); | 446 | xdr_ressize_check(rqstp, p); |
@@ -458,12 +453,12 @@ nfssvc_encode_readdirres(struct svc_rqst *rqstp, u32 *p, | |||
458 | } | 453 | } |
459 | 454 | ||
460 | int | 455 | int |
461 | nfssvc_encode_statfsres(struct svc_rqst *rqstp, u32 *p, | 456 | nfssvc_encode_statfsres(struct svc_rqst *rqstp, __be32 *p, |
462 | struct nfsd_statfsres *resp) | 457 | struct nfsd_statfsres *resp) |
463 | { | 458 | { |
464 | struct kstatfs *stat = &resp->stats; | 459 | struct kstatfs *stat = &resp->stats; |
465 | 460 | ||
466 | *p++ = htonl(NFSSVC_MAXBLKSIZE); /* max transfer size */ | 461 | *p++ = htonl(NFSSVC_MAXBLKSIZE_V2); /* max transfer size */ |
467 | *p++ = htonl(stat->f_bsize); | 462 | *p++ = htonl(stat->f_bsize); |
468 | *p++ = htonl(stat->f_blocks); | 463 | *p++ = htonl(stat->f_blocks); |
469 | *p++ = htonl(stat->f_bfree); | 464 | *p++ = htonl(stat->f_bfree); |
@@ -476,7 +471,7 @@ nfssvc_encode_entry(struct readdir_cd *ccd, const char *name, | |||
476 | int namlen, loff_t offset, ino_t ino, unsigned int d_type) | 471 | int namlen, loff_t offset, ino_t ino, unsigned int d_type) |
477 | { | 472 | { |
478 | struct nfsd_readdirres *cd = container_of(ccd, struct nfsd_readdirres, common); | 473 | struct nfsd_readdirres *cd = container_of(ccd, struct nfsd_readdirres, common); |
479 | u32 *p = cd->buffer; | 474 | __be32 *p = cd->buffer; |
480 | int buflen, slen; | 475 | int buflen, slen; |
481 | 476 | ||
482 | /* | 477 | /* |
@@ -502,7 +497,7 @@ nfssvc_encode_entry(struct readdir_cd *ccd, const char *name, | |||
502 | *p++ = htonl((u32) ino); /* file id */ | 497 | *p++ = htonl((u32) ino); /* file id */ |
503 | p = xdr_encode_array(p, name, namlen);/* name length & name */ | 498 | p = xdr_encode_array(p, name, namlen);/* name length & name */ |
504 | cd->offset = p; /* remember pointer */ | 499 | cd->offset = p; /* remember pointer */ |
505 | *p++ = ~(u32) 0; /* offset of next entry */ | 500 | *p++ = htonl(~0U); /* offset of next entry */ |
506 | 501 | ||
507 | cd->buflen = buflen; | 502 | cd->buflen = buflen; |
508 | cd->buffer = p; | 503 | cd->buffer = p; |
@@ -514,7 +509,7 @@ nfssvc_encode_entry(struct readdir_cd *ccd, const char *name, | |||
514 | * XDR release functions | 509 | * XDR release functions |
515 | */ | 510 | */ |
516 | int | 511 | int |
517 | nfssvc_release_fhandle(struct svc_rqst *rqstp, u32 *p, | 512 | nfssvc_release_fhandle(struct svc_rqst *rqstp, __be32 *p, |
518 | struct nfsd_fhandle *resp) | 513 | struct nfsd_fhandle *resp) |
519 | { | 514 | { |
520 | fh_put(&resp->fh); | 515 | fh_put(&resp->fh); |