diff options
Diffstat (limited to '')
| -rw-r--r-- | fs/ocfs2/cluster/tcp.c | 23 | 
1 files changed, 12 insertions, 11 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c index aecbd712a00c..929a1133bc18 100644 --- a/fs/ocfs2/cluster/tcp.c +++ b/fs/ocfs2/cluster/tcp.c @@ -2087,18 +2087,24 @@ void o2net_stop_listening(struct o2nm_node *node)  int o2net_init(void)  { +	struct folio *folio; +	void *p;  	unsigned long i;  	o2quo_init(); -  	o2net_debugfs_init(); -	o2net_hand = kzalloc(sizeof(struct o2net_handshake), GFP_KERNEL); -	o2net_keep_req = kzalloc(sizeof(struct o2net_msg), GFP_KERNEL); -	o2net_keep_resp = kzalloc(sizeof(struct o2net_msg), GFP_KERNEL); -	if (!o2net_hand || !o2net_keep_req || !o2net_keep_resp) +	folio = folio_alloc(GFP_KERNEL | __GFP_ZERO, 0); +	if (!folio)  		goto out; +	p = folio_address(folio); +	o2net_hand = p; +	p += sizeof(struct o2net_handshake); +	o2net_keep_req = p; +	p += sizeof(struct o2net_msg); +	o2net_keep_resp = p; +  	o2net_hand->protocol_version = cpu_to_be64(O2NET_PROTOCOL_VERSION);  	o2net_hand->connector_id = cpu_to_be64(1); @@ -2124,9 +2130,6 @@ int o2net_init(void)  	return 0;  out: -	kfree(o2net_hand); -	kfree(o2net_keep_req); -	kfree(o2net_keep_resp);  	o2net_debugfs_exit();  	o2quo_exit();  	return -ENOMEM; @@ -2135,8 +2138,6 @@ out:  void o2net_exit(void)  {  	o2quo_exit(); -	kfree(o2net_hand); -	kfree(o2net_keep_req); -	kfree(o2net_keep_resp);  	o2net_debugfs_exit(); +	folio_put(virt_to_folio(o2net_hand));  }  | 
