Re: [PATCH] pci: fix memory leak when virtio pci hotplug

From: Zhiqiang Liu
Date: Wed Mar 24 2021 - 20:53:51 EST


Thanks for your suggestion.

I will rewrite the commit log and send the v2 patch.


On 2021/3/24 2:24, Bjorn Helgaas wrote:
> On Sun, Mar 21, 2021 at 11:29:30PM +0800, Zhiqiang Liu wrote:
>> From: Feilong Lin <linfeilong@xxxxxxxxxx>
>>
>> Repeated hot-plugging of pci devices for a virtual
>> machine driven by virtio, we found that there is a
>> leak in kmalloc-4k, which was confirmed as the memory
>> of the pci_device structure. Then we found out that
>> it was missing pci_dev_put() after pci_get_slot() in
>> enable_slot() of acpiphp_glue.c.
>>
>> Signed-off-by: Feilong Lin <linfeilong@xxxxxxxxxx>
>> Reviewed-by: Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx>
> Since this came from you, Zhiqiang, it needs a signed-off-by (not just
> a reviewed-by) from you. See
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?id=v5.11#n361
>
> Also see
> https://lore.kernel.org/r/20171026223701.GA25649@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> and
>
> - Wrap commit log to fill 80 columns
> - s/pci/PCI/ (subject and commit log)
> - Run "git log --oneline drivers/pci/hotplug/acpiphp_glue.c". It's
> not completely consistent, but at least match the style of one of
> them.
>
> There is no "pci_device" structure. I think you mean the "struct
> pci_dev".
>
> The commit log doesn't actually say what the patch does. It's obvious
> from the patch, but it should say in the commit log. Look at previous
> commit logs to see how they do it.
>
>> ---
>> drivers/pci/hotplug/acpiphp_glue.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
>> index 3365c93abf0e..f031302ad401 100644
>> --- a/drivers/pci/hotplug/acpiphp_glue.c
>> +++ b/drivers/pci/hotplug/acpiphp_glue.c
>> @@ -533,6 +533,7 @@ static void enable_slot(struct acpiphp_slot *slot, bool bridge)
>> slot->flags &= ~SLOT_ENABLED;
>> continue;
>> }
>> + pci_dev_put(dev);
>> }
>> }
>>
>> --
>> 2.19.1
>>
>>
> .