[lustre-devel] [PATCH 12/33] lnet: Use dynamic allocation for LND tunables
James Simmons <[email protected]> Sun, 2 Feb 2025 15:46:12 -0500
| Newsgroups | org.lustre.lists.lustre-devel |
|---|---|
| Message-ID | <[email protected]> |
From: Chris Horn <[email protected]> Increasing size of lnet_ioctl_config_lnd_tunables can cause us to trip Werror=frame-larger-than warning in lnet_net_cmd() and its call to static function lnet_genl_parse_local_ni(). Dynamically allocate this memory instead. WC-bug-id: https://jira.whamcloud.com/browse/LU-16801 Lustre-commit: fe2e85e5c312a6a10 ("LU-16801 lnet: Use dynamic allocation for LND tunables") Signed-off-by: Chris Horn <[email protected]> Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/50872 Reviewed-by: James Simmons <[email protected]> Reviewed-by: Serguei Smirnov <[email protected]> Reviewed-by: Oleg Drokin <[email protected]> Signed-off-by: James Simmons <[email protected]> --- net/lnet/lnet/api-ni.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/net/lnet/lnet/api-ni.c b/net/lnet/lnet/api-ni.c index 5ec6faa2da98..585148b4b6aa 100644 --- a/net/lnet/lnet/api-ni.c +++ b/net/lnet/lnet/api-ni.c @@ -4973,16 +4973,22 @@ lnet_genl_parse_local_ni(struct nlattr *entry, struct genl_info *info, bool *ni_list) { bool create = info->nlhdr->nlmsg_flags & NLM_F_CREATE; - struct lnet_ioctl_config_lnd_tunables tun; + struct lnet_ioctl_config_lnd_tunables *tun; struct nlattr *settings; int rem3, rc = 0; - memset(&tun, 0, sizeof(tun)); + tun = kzalloc(sizeof(*tun), GFP_KERNEL); + if (!tun) { + GENL_SET_ERR_MSG(info, "cannot allocate memory for tunables"); + rc = -ENOMEM; + goto out; + } + /* Use LND defaults */ - tun.lt_cmn.lct_peer_timeout = -1; - tun.lt_cmn.lct_peer_tx_credits = -1; - tun.lt_cmn.lct_peer_rtr_credits = -1; - tun.lt_cmn.lct_max_tx_credits = -1; + tun->lt_cmn.lct_peer_timeout = -1; + tun->lt_cmn.lct_peer_tx_credits = -1; + tun->lt_cmn.lct_peer_rtr_credits = -1; + tun->lt_cmn.lct_max_tx_credits = -1; conf->lic_ncpts = 0; nla_for_each_nested(settings, entry, rem3) { @@ -5031,7 +5037,7 @@ lnet_genl_parse_local_ni(struct nlattr *entry, struct genl_info *info, goto out; } - rc = lnet_genl_parse_tunables(settings, &tun); + rc = lnet_genl_parse_tunables(settings, tun); if (rc < 0) { GENL_SET_ERR_MSG(info, "failed to parse tunables"); @@ -5058,7 +5064,7 @@ lnet_genl_parse_local_ni(struct nlattr *entry, struct genl_info *info, } rc = lnet_genl_parse_lnd_tunables(settings, - &tun.lt_tun, lnd); + &tun->lt_tun, lnd); if (rc < 0) { GENL_SET_ERR_MSG(info, "failed to parse lnd tunables"); @@ -5150,7 +5156,7 @@ lnet_genl_parse_local_ni(struct nlattr *entry, struct genl_info *info, goto out; } - rc = lnet_dyn_add_ni(conf, net_id, &tun); + rc = lnet_dyn_add_ni(conf, net_id, tun); switch (rc) { case -ENOENT: GENL_SET_ERR_MSG(info, @@ -5168,6 +5174,8 @@ lnet_genl_parse_local_ni(struct nlattr *entry, struct genl_info *info, } } out: + kfree(tun); + return rc; } -- 2.39.3 _______________________________________________ lustre-devel mailing list [email protected] http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org