Make spl_kmem_cache size check consistent
On Linux x86_64, kmem cache can have size up to 4M, however increasing spl_kmem_cache_slab_limit can lead to crash due to the size check inconsistency. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Youzhong Yang <yyang@mathworks.com> Closes #15757
This commit is contained in:
parent
a2e71db664
commit
6b64acc157
|
@ -91,7 +91,8 @@ MODULE_PARM_DESC(spl_kmem_cache_max_size, "Maximum size of slab in MB");
|
||||||
* of 16K was determined to be optimal for architectures using 4K pages and
|
* of 16K was determined to be optimal for architectures using 4K pages and
|
||||||
* to also work well on architecutres using larger 64K page sizes.
|
* to also work well on architecutres using larger 64K page sizes.
|
||||||
*/
|
*/
|
||||||
static unsigned int spl_kmem_cache_slab_limit = 16384;
|
static unsigned int spl_kmem_cache_slab_limit =
|
||||||
|
SPL_MAX_KMEM_ORDER_NR_PAGES * PAGE_SIZE;
|
||||||
module_param(spl_kmem_cache_slab_limit, uint, 0644);
|
module_param(spl_kmem_cache_slab_limit, uint, 0644);
|
||||||
MODULE_PARM_DESC(spl_kmem_cache_slab_limit,
|
MODULE_PARM_DESC(spl_kmem_cache_slab_limit,
|
||||||
"Objects less than N bytes use the Linux slab");
|
"Objects less than N bytes use the Linux slab");
|
||||||
|
@ -783,7 +784,7 @@ spl_kmem_cache_create(const char *name, size_t size, size_t align,
|
||||||
} else {
|
} else {
|
||||||
unsigned long slabflags = 0;
|
unsigned long slabflags = 0;
|
||||||
|
|
||||||
if (size > (SPL_MAX_KMEM_ORDER_NR_PAGES * PAGE_SIZE))
|
if (size > spl_kmem_cache_slab_limit)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
#if defined(SLAB_USERCOPY)
|
#if defined(SLAB_USERCOPY)
|
||||||
|
|
Loading…
Reference in New Issue