• Jia-Ju Bai's avatar
    xen: xen-pciback: Replace GFP_ATOMIC with GFP_KERNEL in pcistub_init_device · bb52e316
    Jia-Ju Bai authored
    pcistub_init_device() is never called in atomic context.
    
    The call chain ending up at pcistub_init_device() is:
    [1] pcistub_init_device() <- pcistub_seize() <- pcistub_probe()
    [2] pcistub_init_device() <- pcistub_init_devices_late() <-
    	xen_pcibk_init()
    pcistub_probe() is only set as ".probe" in struct pci_driver.
    xen_pcibk_init() is is only set as a parameter of module_init().
    These functions are not called in atomic context.
    
    Despite never getting called from atomic context,
    pcistub_init_device() calls kzalloc() with GFP_ATOMIC,
    which does not sleep for allocation.
    GFP_ATOMIC is not necessary and can be replaced with GFP_KERNEL,
    which can sleep and improve the possibility of sucessful allocation.
    
    This is found by a static analysis tool named DCNS written by myself.
    And I also manually check it.
    Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
    Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
    bb52e316
pci_stub.c 40.4 KB