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:
Родитель
bc7d4b8fd0
Коммит
2e11f8296d
|
@ -481,6 +481,14 @@ size_t nfs_generic_pg_test(struct nfs_pageio_descriptor *desc,
|
|||
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);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(nfs_generic_pg_test);
|
||||
|
|
Загрузка…
Ссылка в новой задаче