ata: pata_parport: fix memory leaks
authorOndrej Zary <linux@zary.sk>
Tue, 14 Mar 2023 22:58:05 +0000 (23:58 +0100)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Thu, 16 Mar 2023 07:54:38 +0000 (16:54 +0900)
commit5bc9e2d43f86105a95f86fa096fb4e517bb0ce73
tree8a25dc866ff77aca6003a764d774584111c60748
parentdc472c7612297ffc9aea655bf6e9538bec5bfedf
ata: pata_parport: fix memory leaks

When ida_alloc() fails, "pi" is not freed although the misleading
comment says otherwise.
Move the ida_alloc() call up so we really don't have to free "pi" in
case of ida_alloc() failure.

Also move ida_free() call from pi_remove_one() to
pata_parport_dev_release(). It was dereferencing already freed dev
pointer.

Testing revealed leak even in non-failure case which was tracked down
to missing put_device() call after bus_find_device_by_name(). As a
result, pata_parport_dev_release() was never called.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Link: https://lore.kernel.org/r/202303111822.IHNchbkp-lkp@intel.com/
Signed-off-by: Ondrej Zary <linux@zary.sk>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
drivers/ata/pata_parport/pata_parport.c