VFIO fixes 2021-11-17

* Fix hostwin memory leak (Peng Liang)
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEQvbATlQL0amee4qQI5ubbjuwiyIFAmGVUmUbHGFsZXgud2ls
 bGlhbXNvbkByZWRoYXQuY29tAAoJECObm247sIsig5MP/3emkCuS9TYjgzUzZoiC
 /PyqhxlbQDo+1XfjpXZsXRiq8G/y6Gl9vimxNEWVksU7h/y4scoVGcubsBBbPU4v
 IEtoXf3HwYG3ynIIDN+E/tgjsYsOvJ8/AEZ6a0r/rm59zyxqjYfacxyULPo/CghK
 umfXIfQXfh7BCnMPEtE06CNZoqXlE7aLDFBmoKDTVCJLp8/ldt/uHmJ84qf0pA0j
 dUBrzZJKTUN5pQJoJ8sFniKiRPN4Wfs1ht+IB6CByjFug0voM3n6+9E6IvglVfQy
 03xcYqtIc/ZhGQxtemUIFRxLbC5q/znzVmvgv1K4WtnaLUm1HWzIX4fNsmLGbpJA
 V5ip+crrKTwEwVSCJUTnwbWxHxsbnisrzgNU17caAl8dyYGehCnWWQOcJB+aIKig
 M2O4eh4dzfYHoAjIG0Dp4OBTj9loKNHokL9U97XtYiX1GGh9LRgo10ZlJincDEt9
 LLzP+G4AmLi2fFEJh5KCScg8ib19Tc4ODdha2ZtQUs8nFRuKY7UEs4iQqasgqAGI
 mU2cPX2ctTKq1GnyrIaA4YiL5tQQLw0BcdZjgd9Qvden38FSsaKpH7X8x3dzB9JX
 FF4psbpmO8f+UFfRpnK4DnKze74y6z8M2x4TbttGRVW8xu0qnNvg1VK9hjFVXF3s
 21chymAWvLNT56ZUPnC39JY8
 =OFYE
 -----END PGP SIGNATURE-----

Merge tag 'vfio-fixes-20211117.0' of git://github.com/awilliam/qemu-vfio into staging

VFIO fixes 2021-11-17

 * Fix hostwin memory leak (Peng Liang)

# gpg: Signature made Wed 17 Nov 2021 08:05:09 PM CET
# gpg:                using RSA key 42F6C04E540BD1A99E7B8A90239B9B6E3BB08B22
# gpg:                issuer "alex.williamson@redhat.com"
# gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>" [full]
# gpg:                 aka "Alex Williamson <alex@shazbot.org>" [full]
# gpg:                 aka "Alex Williamson <alwillia@redhat.com>" [full]
# gpg:                 aka "Alex Williamson <alex.l.williamson@gmail.com>" [full]

* tag 'vfio-fixes-20211117.0' of git://github.com/awilliam/qemu-vfio:
  vfio: Fix memory leak of hostwin

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
staging
Richard Henderson 2021-11-18 09:39:47 +01:00
commit 0055ecca84
1 changed files with 8 additions and 0 deletions

View File

@ -551,6 +551,7 @@ static int vfio_host_win_del(VFIOContainer *container, hwaddr min_iova,
QLIST_FOREACH(hostwin, &container->hostwin_list, hostwin_next) {
if (hostwin->min_iova == min_iova && hostwin->max_iova == max_iova) {
QLIST_REMOVE(hostwin, hostwin_next);
g_free(hostwin);
return 0;
}
}
@ -2239,6 +2240,7 @@ static void vfio_disconnect_container(VFIOGroup *group)
if (QLIST_EMPTY(&container->group_list)) {
VFIOAddressSpace *space = container->space;
VFIOGuestIOMMU *giommu, *tmp;
VFIOHostDMAWindow *hostwin, *next;
QLIST_REMOVE(container, next);
@ -2249,6 +2251,12 @@ static void vfio_disconnect_container(VFIOGroup *group)
g_free(giommu);
}
QLIST_FOREACH_SAFE(hostwin, &container->hostwin_list, hostwin_next,
next) {
QLIST_REMOVE(hostwin, hostwin_next);
g_free(hostwin);
}
trace_vfio_disconnect_container(container->fd);
close(container->fd);
g_free(container);