Patch "be2net: Replace dma/pci_alloc_coherent() calls with dma_zalloc_coherent()" has been added to the 4.0-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
be2net: Replace dma/pci_alloc_coherent() calls with dma_zalloc_coherent()
to the 4.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
be2net-replace-dma-pci_alloc_coherent-calls-with-dma_zalloc_coherent.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Sat Jun 13 09:48:35 PDT 2015
From: Sriharsha Basavapatna <[email protected]>
Date: Fri, 5 Jun 2015 15:33:59 +0530
Subject: be2net: Replace dma/pci_alloc_coherent() calls with dma_zalloc_coherent()
From: Sriharsha Basavapatna <[email protected]>
[ Upstream commit e51000db4c880165eab06ec0990605f24e75203f ]
There are several places in the driver (all in control paths) where coherent dma memory is being allocated using either dma_alloc_coherent() or the deprecated pci_alloc_consistent(). All these calls should be changed to use dma_zalloc_coherent() to avoid uninitialized fields in data structures backed by this memory.
--- drivers/net/ethernet/emulex/benet/be_cmds.c | 87 ++++++++++++++----------- drivers/net/ethernet/emulex/benet/be_ethtool.c | 18 ++--- drivers/net/ethernet/emulex/benet/be_main.c | 16 ++-- 3 files changed, 68 insertions(+), 53 deletions(-)
drivers/net/ethernet/emulex/benet/be_cmds.c +50 -37
@@ -1773,9 +1773,9 @@ int be_cmd_get_regs(struct be_adapter *a total_size = buf_len; get_fat_cmd.size =sizeof (struct be_cmd_req_get_fat ) +60 *1024 ; - get_fat_cmd.va =pci_alloc_consistent (adapter->pdev, - get_fat_cmd.size, - &get_fat_cmd.dma); + get_fat_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, + get_fat_cmd.size, + &get_fat_cmd.dma,GFP_ATOMIC );if (!get_fat_cmd.va) {dev_err (&adapter->pdev->dev,"Memory allocation failure while reading FAT data\n" );
@@ -1820,8 +1820,8 @@ int be_cmd_get_regs(struct be_adapter *a log_offset += buf_size; } err: -pci_free_consistent (adapter->pdev, get_fat_cmd.size, - get_fat_cmd.va, get_fat_cmd.dma); +dma_free_coherent (&adapter->pdev->dev, get_fat_cmd.size, + get_fat_cmd.va, get_fat_cmd.dma);spin_unlock_bh (&adapter->mcc_lock);return status; }
@@ -2272,12 +2272,12 @@ int be_cmd_read_port_transceiver_data(streturn -EINVAL ; cmd.size =sizeof (struct be_cmd_resp_port_type ); - cmd.va =pci_alloc_consistent (adapter->pdev, cmd.size, &cmd.dma); + cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, cmd.size, &cmd.dma, +GFP_ATOMIC );if (!cmd.va) {dev_err (&adapter->pdev->dev,"Memory allocation failed\n" );return -ENOMEM ; } -memset (cmd.va,0 , cmd.size);spin_lock_bh (&adapter->mcc_lock);
@@ -2302,7 +2302,7 @@ int be_cmd_read_port_transceiver_data(st } err:spin_unlock_bh (&adapter->mcc_lock); -pci_free_consistent (adapter->pdev, cmd.size, cmd.va, cmd.dma); +dma_free_coherent (&adapter->pdev->dev, cmd.size, cmd.va, cmd.dma);return status; }
@@ -2777,7 +2777,8 @@ int be_cmd_get_phy_info(struct be_adapte goto err; } cmd.size =sizeof (struct be_cmd_req_get_phy_info ); - cmd.va =pci_alloc_consistent (adapter->pdev, cmd.size, &cmd.dma); + cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, cmd.size, &cmd.dma, +GFP_ATOMIC );if (!cmd.va) {dev_err (&adapter->pdev->dev,"Memory alloc failure\n" ); status = -ENOMEM ;
@@ -2811,7 +2812,7 @@ int be_cmd_get_phy_info(struct be_adapteBE_SUPPORTED_SPEED_1GBPS ; } } -pci_free_consistent (adapter->pdev, cmd.size, cmd.va, cmd.dma); +dma_free_coherent (&adapter->pdev->dev, cmd.size, cmd.va, cmd.dma); err:spin_unlock_bh (&adapter->mcc_lock);return status;
@@ -2862,8 +2863,9 @@ int be_cmd_get_cntl_attributes(struct bememset (&attribs_cmd,0 ,sizeof (struct be_dma_mem )); attribs_cmd.size =sizeof (struct be_cmd_resp_cntl_attribs ); - attribs_cmd.va =pci_alloc_consistent (adapter->pdev, attribs_cmd.size, - &attribs_cmd.dma); + attribs_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, + attribs_cmd.size, + &attribs_cmd.dma,GFP_ATOMIC );if (!attribs_cmd.va) {dev_err (&adapter->pdev->dev,"Memory allocation failure\n" ); status = -ENOMEM ;
@@ -2890,8 +2892,8 @@ int be_cmd_get_cntl_attributes(struct be err:mutex_unlock (&adapter->mbox_lock);if (attribs_cmd.va) -pci_free_consistent (adapter->pdev, attribs_cmd.size, - attribs_cmd.va, attribs_cmd.dma); +dma_free_coherent (&adapter->pdev->dev, attribs_cmd.size, + attribs_cmd.va, attribs_cmd.dma);return status; }
@@ -3029,9 +3031,10 @@ int be_cmd_get_mac_from_list(struct be_amemset (&get_mac_list_cmd,0 ,sizeof (struct be_dma_mem )); get_mac_list_cmd.size =sizeof (struct be_cmd_resp_get_mac_list ); - get_mac_list_cmd.va =pci_alloc_consistent (adapter->pdev, - get_mac_list_cmd.size, - &get_mac_list_cmd.dma); + get_mac_list_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, + get_mac_list_cmd.size, + &get_mac_list_cmd.dma, +GFP_ATOMIC );if (!get_mac_list_cmd.va) { dev_err(&adapter->pdev->dev,
@@ -3104,8 +3107,8 @@ int be_cmd_get_mac_from_list(struct be_a out:spin_unlock_bh (&adapter->mcc_lock); -pci_free_consistent (adapter->pdev, get_mac_list_cmd.size, - get_mac_list_cmd.va, get_mac_list_cmd.dma); +dma_free_coherent (&adapter->pdev->dev, get_mac_list_cmd.size, + get_mac_list_cmd.va, get_mac_list_cmd.dma);return status; }
@@ -3158,8 +3161,8 @@ int be_cmd_set_mac_list(struct be_adaptememset (&cmd,0 ,sizeof (struct be_dma_mem )); cmd.size =sizeof (struct be_cmd_req_set_mac_list ); - cmd.va =dma_alloc_coherent (&adapter->pdev->dev, cmd.size, - &cmd.dma,GFP_KERNEL ); + cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, cmd.size, &cmd.dma, +GFP_KERNEL );if (!cmd.va)return -ENOMEM ;
@@ -3348,7 +3351,8 @@ int be_cmd_get_acpi_wol_cap(struct be_admemset (&cmd,0 ,sizeof (struct be_dma_mem )); cmd.size =sizeof (struct be_cmd_resp_acpi_wol_magic_config_v1 ); - cmd.va =pci_alloc_consistent (adapter->pdev, cmd.size, &cmd.dma); + cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, cmd.size, &cmd.dma, +GFP_ATOMIC );if (!cmd.va) {dev_err (&adapter->pdev->dev,"Memory allocation failure\n" ); status = -ENOMEM ;
@@ -3383,7 +3387,8 @@ int be_cmd_get_acpi_wol_cap(struct be_ad err:mutex_unlock (&adapter->mbox_lock);if (cmd.va) -pci_free_consistent (adapter->pdev, cmd.size, cmd.va, cmd.dma); +dma_free_coherent (&adapter->pdev->dev, cmd.size, cmd.va, + cmd.dma);return status; }
@@ -3397,8 +3402,9 @@ int be_cmd_set_fw_log_level(struct be_admemset (&extfat_cmd,0 ,sizeof (struct be_dma_mem )); extfat_cmd.size =sizeof (struct be_cmd_resp_get_ext_fat_caps ); - extfat_cmd.va =pci_alloc_consistent (adapter->pdev, extfat_cmd.size, - &extfat_cmd.dma); + extfat_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, + extfat_cmd.size, &extfat_cmd.dma, +GFP_ATOMIC );if (!extfat_cmd.va)return -ENOMEM ;
@@ -3420,8 +3426,8 @@ int be_cmd_set_fw_log_level(struct be_ad status =be_cmd_set_ext_fat_capabilites (adapter, &extfat_cmd, cfgs); err: -pci_free_consistent (adapter->pdev, extfat_cmd.size, extfat_cmd.va, - extfat_cmd.dma); +dma_free_coherent (&adapter->pdev->dev, extfat_cmd.size, extfat_cmd.va, + extfat_cmd.dma);return status; }
@@ -3434,8 +3440,9 @@ int be_cmd_get_fw_log_level(struct be_admemset (&extfat_cmd,0 ,sizeof (struct be_dma_mem )); extfat_cmd.size =sizeof (struct be_cmd_resp_get_ext_fat_caps ); - extfat_cmd.va =pci_alloc_consistent (adapter->pdev, extfat_cmd.size, - &extfat_cmd.dma); + extfat_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, + extfat_cmd.size, &extfat_cmd.dma, +GFP_ATOMIC );if (!extfat_cmd.va) { dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n",
@@ -3453,8 +3460,8 @@ int be_cmd_get_fw_log_level(struct be_ad level = cfgs->module[0 ].trace_lvl[j].dbg_lvl; } } -pci_free_consistent (adapter->pdev, extfat_cmd.size, extfat_cmd.va, - extfat_cmd.dma); +dma_free_coherent (&adapter->pdev->dev, extfat_cmd.size, extfat_cmd.va, + extfat_cmd.dma); err:return level; }
@@ -3652,7 +3659,8 @@ int be_cmd_get_func_config(struct be_adamemset (&cmd,0 ,sizeof (struct be_dma_mem )); cmd.size =sizeof (struct be_cmd_resp_get_func_config ); - cmd.va =pci_alloc_consistent (adapter->pdev, cmd.size, &cmd.dma); + cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, cmd.size, &cmd.dma, +GFP_ATOMIC );if (!cmd.va) {dev_err (&adapter->pdev->dev,"Memory alloc failure\n" ); status = -ENOMEM ;
@@ -3692,7 +3700,8 @@ int be_cmd_get_func_config(struct be_ada err:mutex_unlock (&adapter->mbox_lock);if (cmd.va) -pci_free_consistent (adapter->pdev, cmd.size, cmd.va, cmd.dma); +dma_free_coherent (&adapter->pdev->dev, cmd.size, cmd.va, + cmd.dma);return status; }
@@ -3713,7 +3722,8 @@ int be_cmd_get_profile_config(struct be_memset (&cmd,0 ,sizeof (struct be_dma_mem )); cmd.size =sizeof (struct be_cmd_resp_get_profile_config ); - cmd.va =pci_alloc_consistent (adapter->pdev, cmd.size, &cmd.dma); + cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, cmd.size, &cmd.dma, +GFP_ATOMIC );if (!cmd.va)return -ENOMEM ;
@@ -3752,7 +3762,8 @@ int be_cmd_get_profile_config(struct be_ res->vf_if_cap_flags = vf_res->cap_flags; err:if (cmd.va) -pci_free_consistent (adapter->pdev, cmd.size, cmd.va, cmd.dma); +dma_free_coherent (&adapter->pdev->dev, cmd.size, cmd.va, + cmd.dma);return status; }
@@ -3767,7 +3778,8 @@ static int be_cmd_set_profile_config(strmemset (&cmd,0 ,sizeof (struct be_dma_mem )); cmd.size =sizeof (struct be_cmd_req_set_profile_config ); - cmd.va =pci_alloc_consistent (adapter->pdev, cmd.size, &cmd.dma); + cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, cmd.size, &cmd.dma, +GFP_ATOMIC );if (!cmd.va)return -ENOMEM ;
@@ -3783,7 +3795,8 @@ static int be_cmd_set_profile_config(str status =be_cmd_notify_wait (adapter, &wrb);if (cmd.va) -pci_free_consistent (adapter->pdev, cmd.size, cmd.va, cmd.dma); +dma_free_coherent (&adapter->pdev->dev, cmd.size, cmd.va, + cmd.dma);return status; }
drivers/net/ethernet/emulex/benet/be_ethtool.c +10 -8
@@ -264,8 +264,8 @@ static int lancer_cmd_read_file(struct bint status =0 ; read_cmd.size =LANCER_READ_FILE_CHUNK ; - read_cmd.va =pci_alloc_consistent (adapter->pdev, read_cmd.size, - &read_cmd.dma); + read_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, read_cmd.size, + &read_cmd.dma,GFP_ATOMIC );if (!read_cmd.va) { dev_err(&adapter->pdev->dev,
@@ -289,8 +289,8 @@ static int lancer_cmd_read_file(struct bbreak ; } } -pci_free_consistent (adapter->pdev, read_cmd.size, read_cmd.va, - read_cmd.dma); +dma_free_coherent (&adapter->pdev->dev, read_cmd.size, read_cmd.va, + read_cmd.dma);return status; }
@@ -818,8 +818,9 @@ static int be_test_ddr_dma(struct be_ada }; ddrdma_cmd.size =sizeof (struct be_cmd_req_ddrdma_test ); - ddrdma_cmd.va =dma_alloc_coherent (&adapter->pdev->dev, ddrdma_cmd.size, - &ddrdma_cmd.dma,GFP_KERNEL ); + ddrdma_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, + ddrdma_cmd.size, &ddrdma_cmd.dma, +GFP_KERNEL );if (!ddrdma_cmd.va)return -ENOMEM ;
@@ -941,8 +942,9 @@ static int be_read_eeprom(struct net_devmemset (&eeprom_cmd,0 ,sizeof (struct be_dma_mem )); eeprom_cmd.size =sizeof (struct be_cmd_req_seeprom_read ); - eeprom_cmd.va =dma_alloc_coherent (&adapter->pdev->dev, eeprom_cmd.size, - &eeprom_cmd.dma,GFP_KERNEL ); + eeprom_cmd.va =dma_zalloc_coherent (&adapter->pdev->dev, + eeprom_cmd.size, &eeprom_cmd.dma, +GFP_KERNEL );if (!eeprom_cmd.va)return -ENOMEM ;
drivers/net/ethernet/emulex/benet/be_main.c +8 -8
@@ -4392,8 +4392,8 @@ static int lancer_fw_download(struct be_ flash_cmd.size =sizeof (struct lancer_cmd_req_write_object ) +LANCER_FW_DOWNLOAD_CHUNK ; - flash_cmd.va =dma_alloc_coherent (dev, flash_cmd.size, - &flash_cmd.dma,GFP_KERNEL ); + flash_cmd.va =dma_zalloc_coherent (dev, flash_cmd.size, + &flash_cmd.dma,GFP_KERNEL );if (!flash_cmd.va)return -ENOMEM ;
@@ -4526,8 +4526,8 @@ static int be_fw_download(struct be_adap } flash_cmd.size =sizeof (struct be_cmd_write_flashrom ); - flash_cmd.va =dma_alloc_coherent (dev, flash_cmd.size, &flash_cmd.dma, -GFP_KERNEL ); + flash_cmd.va =dma_zalloc_coherent (dev, flash_cmd.size, &flash_cmd.dma, +GFP_KERNEL );if (!flash_cmd.va)return -ENOMEM ;
@@ -4941,10 +4941,10 @@ static int be_ctrl_init(struct be_adapte goto done; mbox_mem_alloc->size =sizeof (struct be_mcc_mailbox ) +16 ; - mbox_mem_alloc->va =dma_alloc_coherent (&adapter->pdev->dev, - mbox_mem_alloc->size, - &mbox_mem_alloc->dma, -GFP_KERNEL ); + mbox_mem_alloc->va =dma_zalloc_coherent (&adapter->pdev->dev, + mbox_mem_alloc->size, + &mbox_mem_alloc->dma, +GFP_KERNEL );if (!mbox_mem_alloc->va) { status = -ENOMEM ; goto unmap_pci_bars;
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/be2net-replace-dma-pci_alloc_coherent-calls-with-dma_zalloc_coherent.patch