diff options
-rw-r--r-- | fs/nfs/nfs4xdr.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index 2e1fe171bf73..eae46f008da7 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c | |||
@@ -2515,14 +2515,12 @@ static int decode_attr_files_total(struct xdr_stream *xdr, uint32_t *bitmap, uin | |||
2515 | 2515 | ||
2516 | static int decode_pathname(struct xdr_stream *xdr, struct nfs4_pathname *path) | 2516 | static int decode_pathname(struct xdr_stream *xdr, struct nfs4_pathname *path) |
2517 | { | 2517 | { |
2518 | int n; | 2518 | u32 n; |
2519 | __be32 *p; | 2519 | __be32 *p; |
2520 | int status = 0; | 2520 | int status = 0; |
2521 | 2521 | ||
2522 | READ_BUF(4); | 2522 | READ_BUF(4); |
2523 | READ32(n); | 2523 | READ32(n); |
2524 | if (n < 0) | ||
2525 | goto out_eio; | ||
2526 | if (n == 0) | 2524 | if (n == 0) |
2527 | goto root_path; | 2525 | goto root_path; |
2528 | dprintk("path "); | 2526 | dprintk("path "); |
@@ -2579,13 +2577,11 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st | |||
2579 | goto out_eio; | 2577 | goto out_eio; |
2580 | res->nlocations = 0; | 2578 | res->nlocations = 0; |
2581 | while (res->nlocations < n) { | 2579 | while (res->nlocations < n) { |
2582 | int m; | 2580 | u32 m; |
2583 | struct nfs4_fs_location *loc = &res->locations[res->nlocations]; | 2581 | struct nfs4_fs_location *loc = &res->locations[res->nlocations]; |
2584 | 2582 | ||
2585 | READ_BUF(4); | 2583 | READ_BUF(4); |
2586 | READ32(m); | 2584 | READ32(m); |
2587 | if (m <= 0) | ||
2588 | goto out_eio; | ||
2589 | 2585 | ||
2590 | loc->nservers = 0; | 2586 | loc->nservers = 0; |
2591 | dprintk("%s: servers ", __FUNCTION__); | 2587 | dprintk("%s: servers ", __FUNCTION__); |
@@ -2598,8 +2594,12 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st | |||
2598 | if (loc->nservers < NFS4_FS_LOCATION_MAXSERVERS) | 2594 | if (loc->nservers < NFS4_FS_LOCATION_MAXSERVERS) |
2599 | loc->nservers++; | 2595 | loc->nservers++; |
2600 | else { | 2596 | else { |
2601 | int i; | 2597 | unsigned int i; |
2602 | dprintk("%s: using first %d of %d servers returned for location %d\n", __FUNCTION__, NFS4_FS_LOCATION_MAXSERVERS, m, res->nlocations); | 2598 | dprintk("%s: using first %u of %u servers " |
2599 | "returned for location %u\n", | ||
2600 | __FUNCTION__, | ||
2601 | NFS4_FS_LOCATION_MAXSERVERS, | ||
2602 | m, res->nlocations); | ||
2603 | for (i = loc->nservers; i < m; i++) { | 2603 | for (i = loc->nservers; i < m; i++) { |
2604 | unsigned int len; | 2604 | unsigned int len; |
2605 | char *data; | 2605 | char *data; |