mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 09:40:58 +07:00
libceph: Avoid holding the zero page on ceph_msgr_slab_init errors
ceph_msgr_slab_init may fail due to a temporary ENOMEM. Delay a bit the initialization of zero_page in ceph_msgr_init and reorder its cleanup in _ceph_msgr_exit so it's done in reverse order of setup. BUG_ON() will not suffer to be postponed in case it is triggered. Signed-off-by: Benoît Canet <benoit.canet@nodalink.com> Reviewed-by: Alex Elder <elder@linaro.org> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
b79b23682a
commit
d920ff6fc7
@ -276,22 +276,22 @@ static void _ceph_msgr_exit(void)
|
||||
ceph_msgr_wq = NULL;
|
||||
}
|
||||
|
||||
ceph_msgr_slab_exit();
|
||||
|
||||
BUG_ON(zero_page == NULL);
|
||||
page_cache_release(zero_page);
|
||||
zero_page = NULL;
|
||||
|
||||
ceph_msgr_slab_exit();
|
||||
}
|
||||
|
||||
int ceph_msgr_init(void)
|
||||
{
|
||||
if (ceph_msgr_slab_init())
|
||||
return -ENOMEM;
|
||||
|
||||
BUG_ON(zero_page != NULL);
|
||||
zero_page = ZERO_PAGE(0);
|
||||
page_cache_get(zero_page);
|
||||
|
||||
if (ceph_msgr_slab_init())
|
||||
return -ENOMEM;
|
||||
|
||||
/*
|
||||
* The number of active work items is limited by the number of
|
||||
* connections, so leave @max_active at default.
|
||||
|
Loading…
Reference in New Issue
Block a user