• R
    xen-blkback: fix memory leaks · ef753411
    Roger Pau Monne 提交于
    I've at least identified two possible memory leaks in blkback, both
    related to the shutdown path of a VBD:
    
    - blkback doesn't wait for any pending purge work to finish before
      cleaning the list of free_pages. The purge work will call
      put_free_pages and thus we might end up with pages being added to
      the free_pages list after we have emptied it. Fix this by making
      sure there's no pending purge work before exiting
      xen_blkif_schedule, and moving the free_page cleanup code to
      xen_blkif_free.
    - blkback doesn't wait for pending requests to end before cleaning
      persistent grants and the list of free_pages. Again this can add
      pages to the free_pages list or persistent grants to the
      persistent_gnts red-black tree. Fixed by moving the persistent
      grants and free_pages cleanup code to xen_blkif_free.
    
    Also, add some checks in xen_blkif_free to make sure we are cleaning
    everything.
    Signed-off-by: NRoger Pau Monné <roger.pau@citrix.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: NDavid Vrabel <david.vrabel@citrix.com>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Tested-by: NMatt Rushton <mrushton@amazon.com>
    Reviewed-by: NMatt Rushton <mrushton@amazon.com>
    Cc: Matt Wilson <msw@amazon.com>
    Cc: Ian Campbell <Ian.Campbell@citrix.com>
    Signed-off-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    ef753411
xenbus.c 22.2 KB