Skip to content

Commit cff0687

Browse files
committed
Merge tag 'ntb-6.5' of https://github.com/jonmason/ntb
Pull NTB updates from Jon Mason: "Fixes for pci_clean_master, error handling in driver inits, and various other issues/bugs" * tag 'ntb-6.5' of https://github.com/jonmason/ntb: ntb: hw: amd: Fix debugfs_create_dir error checking ntb.rst: Fix copy and paste error ntb_netdev: Fix module_init problem ntb: intel: Remove redundant pci_clear_master ntb: epf: Remove redundant pci_clear_master ntb_hw_amd: Remove redundant pci_clear_master ntb: idt: drop redundant pci_enable_pcie_error_reporting() MAINTAINERS: git://github -> https://github.com for jonmason NTB: EPF: fix possible memory leak in pci_vntb_probe() NTB: ntb_tool: Add check for devm_kcalloc NTB: ntb_transport: fix possible memory leak while device_register() fails ntb: intel: Fix error handling in intel_ntb_pci_driver_init() NTB: amd: Fix error handling in amd_ntb_pci_driver_init() ntb: idt: Fix error handling in idt_pci_driver_init()
2 parents 1c7873e + bff6efc commit cff0687

File tree

10 files changed

+36
-33
lines changed

10 files changed

+36
-33
lines changed

Documentation/driver-api/ntb.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,9 @@ The MSI test client serves to test and debug the MSI library which
207207
allows for passing MSI interrupts across NTB memory windows. The
208208
test client is interacted with through the debugfs filesystem:
209209

210-
* *debugfs*/ntb\_tool/*hw*/
210+
* *debugfs*/ntb\_msi\_test/*hw*/
211211
A directory in debugfs will be created for each
212-
NTB device probed by the tool. This directory is shortened to *hw*
212+
NTB device probed by the msi test. This directory is shortened to *hw*
213213
below.
214214
* *hw*/port
215215
This file describes the local port number

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15010,7 +15010,7 @@ M: Allen Hubbe <allenbh@gmail.com>
1501015010
L: ntb@lists.linux.dev
1501115011
S: Supported
1501215012
W: https://github.com/jonmason/ntb/wiki
15013-
T: git git://github.com/jonmason/ntb.git
15013+
T: git https://github.com/jonmason/ntb.git
1501415014
F: drivers/net/ntb_netdev.c
1501515015
F: drivers/ntb/
1501615016
F: drivers/pci/endpoint/functions/pci-epf-*ntb.c

drivers/net/ntb_netdev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ static int __init ntb_netdev_init_module(void)
493493

494494
return 0;
495495
}
496-
module_init(ntb_netdev_init_module);
496+
late_initcall(ntb_netdev_init_module);
497497

498498
static void __exit ntb_netdev_exit_module(void)
499499
{

drivers/ntb/hw/amd/ntb_hw_amd.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -941,7 +941,7 @@ static void ndev_init_debugfs(struct amd_ntb_dev *ndev)
941941
ndev->debugfs_dir =
942942
debugfs_create_dir(pci_name(ndev->ntb.pdev),
943943
debugfs_dir);
944-
if (!ndev->debugfs_dir)
944+
if (IS_ERR(ndev->debugfs_dir))
945945
ndev->debugfs_info = NULL;
946946
else
947947
ndev->debugfs_info =
@@ -1194,7 +1194,6 @@ static int amd_ntb_init_pci(struct amd_ntb_dev *ndev,
11941194
return 0;
11951195

11961196
err_dma_mask:
1197-
pci_clear_master(pdev);
11981197
pci_release_regions(pdev);
11991198
err_pci_regions:
12001199
pci_disable_device(pdev);
@@ -1209,7 +1208,6 @@ static void amd_ntb_deinit_pci(struct amd_ntb_dev *ndev)
12091208

12101209
pci_iounmap(pdev, ndev->self_mmio);
12111210

1212-
pci_clear_master(pdev);
12131211
pci_release_regions(pdev);
12141212
pci_disable_device(pdev);
12151213
pci_set_drvdata(pdev, NULL);
@@ -1338,12 +1336,17 @@ static struct pci_driver amd_ntb_pci_driver = {
13381336

13391337
static int __init amd_ntb_pci_driver_init(void)
13401338
{
1339+
int ret;
13411340
pr_info("%s %s\n", NTB_DESC, NTB_VER);
13421341

13431342
if (debugfs_initialized())
13441343
debugfs_dir = debugfs_create_dir(KBUILD_MODNAME, NULL);
13451344

1346-
return pci_register_driver(&amd_ntb_pci_driver);
1345+
ret = pci_register_driver(&amd_ntb_pci_driver);
1346+
if (ret)
1347+
debugfs_remove_recursive(debugfs_dir);
1348+
1349+
return ret;
13471350
}
13481351
module_init(amd_ntb_pci_driver_init);
13491352

drivers/ntb/hw/epf/ntb_hw_epf.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -591,22 +591,22 @@ static int ntb_epf_init_pci(struct ntb_epf_dev *ndev,
591591
ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
592592
if (ret) {
593593
dev_err(dev, "Cannot set DMA mask\n");
594-
goto err_dma_mask;
594+
goto err_pci_regions;
595595
}
596596
dev_warn(&pdev->dev, "Cannot DMA highmem\n");
597597
}
598598

599599
ndev->ctrl_reg = pci_iomap(pdev, ndev->ctrl_reg_bar, 0);
600600
if (!ndev->ctrl_reg) {
601601
ret = -EIO;
602-
goto err_dma_mask;
602+
goto err_pci_regions;
603603
}
604604

605605
if (ndev->peer_spad_reg_bar) {
606606
ndev->peer_spad_reg = pci_iomap(pdev, ndev->peer_spad_reg_bar, 0);
607607
if (!ndev->peer_spad_reg) {
608608
ret = -EIO;
609-
goto err_dma_mask;
609+
goto err_pci_regions;
610610
}
611611
} else {
612612
spad_sz = 4 * readl(ndev->ctrl_reg + NTB_EPF_SPAD_COUNT);
@@ -617,14 +617,11 @@ static int ntb_epf_init_pci(struct ntb_epf_dev *ndev,
617617
ndev->db_reg = pci_iomap(pdev, ndev->db_reg_bar, 0);
618618
if (!ndev->db_reg) {
619619
ret = -EIO;
620-
goto err_dma_mask;
620+
goto err_pci_regions;
621621
}
622622

623623
return 0;
624624

625-
err_dma_mask:
626-
pci_clear_master(pdev);
627-
628625
err_pci_regions:
629626
pci_disable_device(pdev);
630627

@@ -642,7 +639,6 @@ static void ntb_epf_deinit_pci(struct ntb_epf_dev *ndev)
642639
pci_iounmap(pdev, ndev->peer_spad_reg);
643640
pci_iounmap(pdev, ndev->db_reg);
644641

645-
pci_clear_master(pdev);
646642
pci_release_regions(pdev);
647643
pci_disable_device(pdev);
648644
pci_set_drvdata(pdev, NULL);

drivers/ntb/hw/idt/ntb_hw_idt.c

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2651,20 +2651,18 @@ static int idt_init_pci(struct idt_ntb_dev *ndev)
26512651
}
26522652

26532653
/*
2654-
* Enable the device advanced error reporting. It's not critical to
2654+
* The PCI core enables device error reporting. It's not critical to
26552655
* have AER disabled in the kernel.
2656+
*
2657+
* Cleanup nonfatal error status before getting to init.
26562658
*/
2657-
ret = pci_enable_pcie_error_reporting(pdev);
2658-
if (ret != 0)
2659-
dev_warn(&pdev->dev, "PCIe AER capability disabled\n");
2660-
else /* Cleanup nonfatal error status before getting to init */
2661-
pci_aer_clear_nonfatal_status(pdev);
2659+
pci_aer_clear_nonfatal_status(pdev);
26622660

26632661
/* First enable the PCI device */
26642662
ret = pcim_enable_device(pdev);
26652663
if (ret != 0) {
26662664
dev_err(&pdev->dev, "Failed to enable PCIe device\n");
2667-
goto err_disable_aer;
2665+
return ret;
26682666
}
26692667

26702668
/*
@@ -2692,8 +2690,6 @@ static int idt_init_pci(struct idt_ntb_dev *ndev)
26922690

26932691
err_clear_master:
26942692
pci_clear_master(pdev);
2695-
err_disable_aer:
2696-
(void)pci_disable_pcie_error_reporting(pdev);
26972693

26982694
return ret;
26992695
}
@@ -2714,9 +2710,6 @@ static void idt_deinit_pci(struct idt_ntb_dev *ndev)
27142710
/* Clear the bus master disabling the Request TLPs translation */
27152711
pci_clear_master(pdev);
27162712

2717-
/* Disable the AER capability */
2718-
(void)pci_disable_pcie_error_reporting(pdev);
2719-
27202713
dev_dbg(&pdev->dev, "NT-function PCIe interface cleared");
27212714
}
27222715

@@ -2891,14 +2884,19 @@ static struct pci_driver idt_pci_driver = {
28912884

28922885
static int __init idt_pci_driver_init(void)
28932886
{
2887+
int ret;
28942888
pr_info("%s %s\n", NTB_DESC, NTB_VER);
28952889

28962890
/* Create the top DebugFS directory if the FS is initialized */
28972891
if (debugfs_initialized())
28982892
dbgfs_topdir = debugfs_create_dir(KBUILD_MODNAME, NULL);
28992893

29002894
/* Register the NTB hardware driver to handle the PCI device */
2901-
return pci_register_driver(&idt_pci_driver);
2895+
ret = pci_register_driver(&idt_pci_driver);
2896+
if (ret)
2897+
debugfs_remove_recursive(dbgfs_topdir);
2898+
2899+
return ret;
29022900
}
29032901
module_init(idt_pci_driver_init);
29042902

drivers/ntb/hw/intel/ntb_hw_gen1.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,7 +1791,6 @@ static int intel_ntb_init_pci(struct intel_ntb_dev *ndev, struct pci_dev *pdev)
17911791

17921792
err_mmio:
17931793
err_dma_mask:
1794-
pci_clear_master(pdev);
17951794
pci_release_regions(pdev);
17961795
err_pci_regions:
17971796
pci_disable_device(pdev);
@@ -1808,7 +1807,6 @@ static void intel_ntb_deinit_pci(struct intel_ntb_dev *ndev)
18081807
pci_iounmap(pdev, ndev->peer_mmio);
18091808
pci_iounmap(pdev, ndev->self_mmio);
18101809

1811-
pci_clear_master(pdev);
18121810
pci_release_regions(pdev);
18131811
pci_disable_device(pdev);
18141812
pci_set_drvdata(pdev, NULL);
@@ -2064,12 +2062,17 @@ static struct pci_driver intel_ntb_pci_driver = {
20642062

20652063
static int __init intel_ntb_pci_driver_init(void)
20662064
{
2065+
int ret;
20672066
pr_info("%s %s\n", NTB_DESC, NTB_VER);
20682067

20692068
if (debugfs_initialized())
20702069
debugfs_dir = debugfs_create_dir(KBUILD_MODNAME, NULL);
20712070

2072-
return pci_register_driver(&intel_ntb_pci_driver);
2071+
ret = pci_register_driver(&intel_ntb_pci_driver);
2072+
if (ret)
2073+
debugfs_remove_recursive(debugfs_dir);
2074+
2075+
return ret;
20732076
}
20742077
module_init(intel_ntb_pci_driver_init);
20752078

drivers/ntb/ntb_transport.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ int ntb_transport_register_client_dev(char *device_name)
410410

411411
rc = device_register(dev);
412412
if (rc) {
413-
kfree(client_dev);
413+
put_device(dev);
414414
goto err;
415415
}
416416

drivers/ntb/test/ntb_tool.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,8 @@ static int tool_init_mws(struct tool_ctx *tc)
998998
tc->peers[pidx].outmws =
999999
devm_kcalloc(&tc->ntb->dev, tc->peers[pidx].outmw_cnt,
10001000
sizeof(*tc->peers[pidx].outmws), GFP_KERNEL);
1001+
if (tc->peers[pidx].outmws == NULL)
1002+
return -ENOMEM;
10011003

10021004
for (widx = 0; widx < tc->peers[pidx].outmw_cnt; widx++) {
10031005
tc->peers[pidx].outmws[widx].pidx = pidx;

drivers/pci/endpoint/functions/pci-epf-vntb.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1285,6 +1285,7 @@ static int pci_vntb_probe(struct pci_dev *pdev, const struct pci_device_id *id)
12851285
return 0;
12861286

12871287
err_register_dev:
1288+
put_device(&ndev->ntb.dev);
12881289
return -EINVAL;
12891290
}
12901291

0 commit comments

Comments
 (0)