From 7a01b01e8873e8f8b4cb5f4f98f18c9bc4403b0b Mon Sep 17 00:00:00 2001 From: Revanth Kumar Uppala Date: Thu, 10 Aug 2023 20:00:33 +0530 Subject: [PATCH] nvethernet: Resolve "Wframe-larger-than" warning -Use dynamic structure pointer to eliminate "Wframe-larger-than" warning. -Modify "-Wframe-larger-than" flag from 4096 bytes to 2048 bytes Bug 4213870 Change-Id: I9dc3df951290415ce587b1fe2440ee52dd985b62 Signed-off-by: Revanth Kumar Uppala Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2954775 Tested-by: mobile promotions Reviewed-by: mobile promotions --- drivers/net/ethernet/nvidia/nvethernet/Makefile | 2 +- .../ethernet/nvidia/nvethernet/ether_linux.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/Makefile b/drivers/net/ethernet/nvidia/nvethernet/Makefile index 4fc19c33..f37499a1 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/Makefile +++ b/drivers/net/ethernet/nvidia/nvethernet/Makefile @@ -15,7 +15,7 @@ endif ifeq ($(findstring ack_src,$(NV_BUILD_KERNEL_OPTIONS)),) # These CFLAGS must not be shared/used in OSI. These are local to Linux -ccflags-y += -DLINUX_OS -DNET30 -DNVPKCS_MACSEC -DLINUX_IVC -mno-outline-atomics -Werror=frame-larger-than=4096 \ +ccflags-y += -DLINUX_OS -DNET30 -DNVPKCS_MACSEC -DLINUX_IVC -mno-outline-atomics -Werror=frame-larger-than=2048 \ -I$(srctree.nvidia-oot)/drivers/net/ethernet/nvidia/nvethernet/nvethernetrm/include \ -I$(srctree.nvidia-oot)/drivers/net/ethernet/nvidia/nvethernet/nvethernetrm/osi/common/include else diff --git a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c index 6da5666f..90ba98f3 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ether_linux.c @@ -6460,7 +6460,7 @@ static int ether_probe(struct platform_device *pdev) unsigned int num_dma_chans, mac, num_mtl_queues, chan; struct osi_core_priv_data *osi_core; struct osi_dma_priv_data *osi_dma; - struct osi_ioctl ioctl_data = {}; + struct osi_ioctl *ioctl_data; struct net_device *ndev; int ret = 0, i; const char *if_name; @@ -6558,14 +6558,20 @@ static int ether_probe(struct platform_device *pdev) goto err_init_res; } - ioctl_data.cmd = OSI_CMD_GET_HW_FEAT; - ret = osi_handle_ioctl(osi_core, &ioctl_data); + ioctl_data = devm_kzalloc(&pdev->dev, sizeof(struct osi_ioctl), + GFP_KERNEL); + if (ioctl_data == NULL) { + ret = -ENOMEM; + goto err_kzalloc; + } + ioctl_data->cmd = OSI_CMD_GET_HW_FEAT; + ret = osi_handle_ioctl(osi_core, ioctl_data); if (ret < 0) { dev_err(&pdev->dev, "failed to get HW features\n"); goto err_dma_mask; } - osi_core->mac_ver = ioctl_data.arg1_u32; - memcpy(&pdata->hw_feat, &ioctl_data.hw_feat, + osi_core->mac_ver = ioctl_data->arg1_u32; + memcpy(&pdata->hw_feat, &ioctl_data->hw_feat, sizeof(struct osi_hw_features)); ret = ether_get_mac_address(pdata); @@ -6721,6 +6727,7 @@ err_init_res: err_parse_dt: err_core_ops: err_dma_ops: +err_kzalloc: ether_stop_ivc(pdata); free_netdev(ndev); return ret;