mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
pnfs: check that partial LAYOUTGET return is ignored
Either a bad server reply, or our ignoring of multiple array segments in a reply, can cause a reply to not meet our requirements. Ensure that we ignore such replies. Signed-off-by: Fred Isaman <iisaman@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
2130ff6636
commit
fc1794c5b0
@ -660,6 +660,17 @@ pnfs_layout_process(struct nfs4_layoutget *lgp)
|
||||
struct inode *ino = lo->plh_inode;
|
||||
int status = 0;
|
||||
|
||||
/* Verify we got what we asked for.
|
||||
* Note that because the xdr parsing only accepts a single
|
||||
* element array, this can fail even if the server is behaving
|
||||
* correctly.
|
||||
*/
|
||||
if (lgp->args.range.iomode > res->range.iomode ||
|
||||
res->range.offset != 0 ||
|
||||
res->range.length != NFS4_MAX_UINT64) {
|
||||
status = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
/* Inject layout blob into I/O device driver */
|
||||
lseg = NFS_SERVER(ino)->pnfs_curr_ld->alloc_lseg(lo, res);
|
||||
if (!lseg || IS_ERR(lseg)) {
|
||||
|
Loading…
Reference in New Issue
Block a user