forked from luck/tmp_suning_uos_patched
nfs: cap request size to fit a kmalloced page array
pNFS servers may return arbitrarily large layouts. Trim back the I/O size to one that we can at least allocate the page array for. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
bc7d4b8fd0
commit
2e11f8296d
|
@ -481,6 +481,14 @@ size_t nfs_generic_pg_test(struct nfs_pageio_descriptor *desc,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Limit the request size so that we can still allocate a page array
|
||||||
|
* for it without upsetting the slab allocator.
|
||||||
|
*/
|
||||||
|
if (((desc->pg_count + req->wb_bytes) >> PAGE_SHIFT) *
|
||||||
|
sizeof(struct page) > PAGE_SIZE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
return min(desc->pg_bsize - desc->pg_count, (size_t)req->wb_bytes);
|
return min(desc->pg_bsize - desc->pg_count, (size_t)req->wb_bytes);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nfs_generic_pg_test);
|
EXPORT_SYMBOL_GPL(nfs_generic_pg_test);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user