mirror of
https://github.com/torvalds/linux.git
synced 2024-12-11 13:41:55 +00:00
Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2022-11-23 (ixgbevf, i40e, fm10k, iavf, e100) This series contains updates to various Intel drivers. Shang XiaoJing fixes init module error path stop to resource leaks for ixgbevf and i40e. Yuan Can also does the same for fm10k and iavf. Wang Hai stops freeing of skb as it was causing use after free error for e100. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
1f605d6d10
@ -1741,11 +1741,8 @@ static int e100_xmit_prepare(struct nic *nic, struct cb *cb,
|
||||
dma_addr = dma_map_single(&nic->pdev->dev, skb->data, skb->len,
|
||||
DMA_TO_DEVICE);
|
||||
/* If we can't map the skb, have the upper layer try later */
|
||||
if (dma_mapping_error(&nic->pdev->dev, dma_addr)) {
|
||||
dev_kfree_skb_any(skb);
|
||||
skb = NULL;
|
||||
if (dma_mapping_error(&nic->pdev->dev, dma_addr))
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/*
|
||||
* Use the last 4 bytes of the SKB payload packet as the CRC, used for
|
||||
|
@ -32,6 +32,8 @@ struct workqueue_struct *fm10k_workqueue;
|
||||
**/
|
||||
static int __init fm10k_init_module(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
pr_info("%s\n", fm10k_driver_string);
|
||||
pr_info("%s\n", fm10k_copyright);
|
||||
|
||||
@ -43,7 +45,13 @@ static int __init fm10k_init_module(void)
|
||||
|
||||
fm10k_dbg_init();
|
||||
|
||||
return fm10k_register_pci_driver();
|
||||
ret = fm10k_register_pci_driver();
|
||||
if (ret) {
|
||||
fm10k_dbg_exit();
|
||||
destroy_workqueue(fm10k_workqueue);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
module_init(fm10k_init_module);
|
||||
|
||||
|
@ -16644,6 +16644,8 @@ static struct pci_driver i40e_driver = {
|
||||
**/
|
||||
static int __init i40e_init_module(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
pr_info("%s: %s\n", i40e_driver_name, i40e_driver_string);
|
||||
pr_info("%s: %s\n", i40e_driver_name, i40e_copyright);
|
||||
|
||||
@ -16661,7 +16663,14 @@ static int __init i40e_init_module(void)
|
||||
}
|
||||
|
||||
i40e_dbg_init();
|
||||
return pci_register_driver(&i40e_driver);
|
||||
err = pci_register_driver(&i40e_driver);
|
||||
if (err) {
|
||||
destroy_workqueue(i40e_wq);
|
||||
i40e_dbg_exit();
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
module_init(i40e_init_module);
|
||||
|
||||
|
@ -5196,6 +5196,8 @@ static struct pci_driver iavf_driver = {
|
||||
**/
|
||||
static int __init iavf_init_module(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
pr_info("iavf: %s\n", iavf_driver_string);
|
||||
|
||||
pr_info("%s\n", iavf_copyright);
|
||||
@ -5206,7 +5208,12 @@ static int __init iavf_init_module(void)
|
||||
pr_err("%s: Failed to create workqueue\n", iavf_driver_name);
|
||||
return -ENOMEM;
|
||||
}
|
||||
return pci_register_driver(&iavf_driver);
|
||||
|
||||
ret = pci_register_driver(&iavf_driver);
|
||||
if (ret)
|
||||
destroy_workqueue(iavf_wq);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
module_init(iavf_init_module);
|
||||
|
@ -4869,6 +4869,8 @@ static struct pci_driver ixgbevf_driver = {
|
||||
**/
|
||||
static int __init ixgbevf_init_module(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
pr_info("%s\n", ixgbevf_driver_string);
|
||||
pr_info("%s\n", ixgbevf_copyright);
|
||||
ixgbevf_wq = create_singlethread_workqueue(ixgbevf_driver_name);
|
||||
@ -4877,7 +4879,13 @@ static int __init ixgbevf_init_module(void)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return pci_register_driver(&ixgbevf_driver);
|
||||
err = pci_register_driver(&ixgbevf_driver);
|
||||
if (err) {
|
||||
destroy_workqueue(ixgbevf_wq);
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
module_init(ixgbevf_init_module);
|
||||
|
Loading…
Reference in New Issue
Block a user