Re: [PATCH 1/4] xen: xen-pciback: Replace GFP_ATOMIC with GFP_KERNEL in pcistub_probe

From: Boris Ostrovsky
Date: Tue Apr 10 2018 - 10:25:49 EST


On 04/09/2018 11:03 AM, Jia-Ju Bai wrote:
> pcistub_probe() is never called in atomic context.
> This function is only set as ".probe" in struct pci_driver.
>
> Despite never getting called from atomic context,
> pcistub_probe() calls kmalloc() 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: Jia-Ju Bai <baijiaju1990@xxxxxxxxx>

What about use of GFP_ATOMIC in pcistub_reg_add()?

-boris

> ---
> drivers/xen/xen-pciback/pci_stub.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
> index 9e480fd..95e6ddd 100644
> --- a/drivers/xen/xen-pciback/pci_stub.c
> +++ b/drivers/xen/xen-pciback/pci_stub.c
> @@ -577,7 +577,7 @@ static int pcistub_probe(struct pci_dev *dev, const struct pci_device_id *id)
> }
>
> if (!match) {
> - pci_dev_id = kmalloc(sizeof(*pci_dev_id), GFP_ATOMIC);
> + pci_dev_id = kmalloc(sizeof(*pci_dev_id), GFP_KERNEL);
> if (!pci_dev_id) {
> err = -ENOMEM;
> goto out;