• Yuan Can's avatar
    ntb: idt: Fix error handling in idt_pci_driver_init() · c0129682
    Yuan Can authored
    A problem about ntb_hw_idt create debugfs failed is triggered with the
    following log given:
    
     [ 1236.637636] IDT PCI-E Non-Transparent Bridge Driver 2.0
     [ 1236.639292] debugfs: Directory 'ntb_hw_idt' with parent '/' already present!
    
    The reason is that idt_pci_driver_init() returns pci_register_driver()
    directly without checking its return value, if pci_register_driver()
    failed, it returns without destroy the newly created debugfs, resulting
    the debugfs of ntb_hw_idt can never be created later.
    
     idt_pci_driver_init()
       debugfs_create_dir() # create debugfs directory
       pci_register_driver()
         driver_register()
           bus_add_driver()
             priv = kzalloc(...) # OOM happened
       # return without destroy debugfs directory
    
    Fix by removing debugfs when pci_register_driver() returns error.
    
    Fixes: bf2a952d ("NTB: Add IDT 89HPESxNTx PCIe-switches support")
    Signed-off-by: default avatarYuan Can <yuancan@huawei.com>
    Signed-off-by: default avatarJon Mason <jdmason@kudzu.us>
    c0129682
ntb_hw_idt.c 90.2 KB