• Andreas Gruenbacher's avatar
    gfs2: Put bitmap buffers in put_super · 10283ea5
    Andreas Gruenbacher authored
    gfs2_put_super calls gfs2_clear_rgrpd to destroy the gfs2_rgrpd objects
    attached to the resource group glocks.  That function should release the
    buffers attached to the gfs2_bitmap objects (bi_bh), but the call to
    gfs2_rgrp_brelse for doing that is missing.
    
    When gfs2_releasepage later runs across these buffers which are still
    referenced, it refuses to free them.  This causes the pages the buffers
    are attached to to remain referenced as well.  With enough mount/unmount
    cycles, the system will eventually run out of memory.
    
    Fix this by adding the missing call to gfs2_rgrp_brelse in
    gfs2_clear_rgrpd.
    
    (Also fix a gfs2_rgrp_relse -> gfs2_rgrp_brelse typo in a comment.)
    
    Fixes: 39b0f1e9 ("GFS2: Don't brelse rgrp buffer_heads every allocation")
    Cc: stable@vger.kernel.org # v4.2+
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    10283ea5
rgrp.c 71.4 KB