Re: [drivers/pci] Possible memleak in pci_bus_set_aer_ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/13/24 7:20 PM, Zijie Zhao wrote:
> Dear PCI Developers,
>
> We are curious whether the function `pci_bus_set_aer_ops` might have a memory leak.
>
> The function is https://elixir.bootlin.com/linux/v6.8/source/drivers/pci/pcie/aer_inject.c#L297
> and the relevant code is
> ```
> static int pci_bus_set_aer_ops(struct pci_bus *bus)
> {
> 	struct pci_ops *ops;
> 	struct pci_bus_ops *bus_ops;
> 	unsigned long flags;
>
> 	bus_ops = kmalloc(sizeof(*bus_ops), GFP_KERNEL);
> 	if (!bus_ops)
> 		return -ENOMEM;
> 	ops = pci_bus_set_ops(bus, &aer_inj_pci_ops);
> 	spin_lock_irqsave(&inject_lock, flags);
> 	if (ops == &aer_inj_pci_ops)
> 		goto out;
> 	pci_bus_ops_init(bus_ops, bus, ops);
> 	list_add(&bus_ops->list, &pci_bus_ops_list);
> 	bus_ops = NULL;
> out:
> 	spin_unlock_irqrestore(&inject_lock, flags);
> 	kfree(bus_ops);
> 	return 0;
> }
> ```
>
> Here if the goto statement does not jump to `out`, the `bus_ops` will be assigned with `NULL` and then `kfree(bus_ops)` will not free the allocated memory.
>
> Please kindly correct us if we missed any key information. Looking forward to your response!

I think it is a valid issue that needs to be fixed. If you would like, please send a patch to fix it.

>
> Best,
> Zijie
>
-- 
Sathyanarayanan Kuppuswamy
Linux Kernel Developer





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux