===== git log ====
commit 318d2c833fe913c10e50cde9e7b9504c3fc1897e
Author: Jiffin Tony Thottan <jthottan@redhat.com>
Date:   Thu Apr 12 22:05:47 2018 +0530

    Release notes for 3.12.8
    
    Change-Id: If49d876df9b96acbc20c6378cea4ba0fed386b9f
    BUG: 1564465
    Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>

commit 638e57e091f5c23e5c1d0c3692ecdacf85aa9bc5
Author: Pranith Kumar K <pkarampu@redhat.com>
Date:   Wed Mar 21 18:06:54 2018 +0530

    features/index: Choose different base file on EMLINK error
    
    Change-Id: I4648816af908539efdc2528608aa2ebf7f0d0e2f
    fixes: bz#1565655
    Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
    (cherry picked from commit bb12f2109a01856e8184e13cf984210d20155b13)

commit 62f3b9c94a4e862d3c05d621696ef52584fb475a
Author: Soumya Koduri <skoduri@redhat.com>
Date:   Fri Nov 3 15:41:34 2017 +0530

    timer: Fix possible race during cleanup
    
    As mentioned in bug1509189, there is a possible race
    between gf_timer_cancel(), gf_timer_proc() and
    gf_timer_registry_destroy() leading to use_after_free.
    
    Problem:
    
    1) gf_timer_proc() is called, locks reg, and gets an event.
    It unlocks reg, and calls the callback.
    
    2) Meanwhile gf_timer_registry_destroy() is called, and removes
    reg from ctx, and joins on gf_timer_proc().
    
    3) gf_timer_call_cancel() is called on the event being
    processed.  It cannot find reg (since it's been removed from reg),
    so it frees event.
    
    4) the callback returns into gf_timer_proc(), and it tries to free
    event, but it's already free, so double free.
    
    Solution:
    The fix is to bail out in gf_timer_cancel() when registry
    is not found. The logic behind this is that, gf_timer_cancel()

More commit messages for this ChangeLog can be found at
https://forge.gluster.org/glusterfs-core/glusterfs/commits/v3.12.8
