• Stéphane Eranian's avatar
    [PATCH] ia64: fix critical perfmon2 bugs · 7502ff99
    Stéphane Eranian authored
    This patch fixes the following issues:
    
    - fix a nasty corner case by which a task could inherit psr.pp/psr.up
      that could be stale by the time it runs. psr.pp/psr.up bits must be
      cleared on fork and inherited on execve(). Test case provided by
      John Levon.
    
    - mask interrupts when locking the pfm stat structure. We don't want
      to take PMU interrupts in the middle of this kind of critical
      section.
    
    - fix a bug in pfm_close() for context which use asynchronous
      notifications.  You cannot call fasync_helper() with interrupts
      disabled because it reenables them. There was no real danger of
      moving the call outside our critical section.
    
    - fix a bug in in pfm_flush_pmds() where you can leave the freeze bit
      set in the pmc saved state.
    
    - updated dump_pmu_state()
    
    - cleanup the BUG_ON() usage
    7502ff99
perfmon.c 165 KB