Skip to content

Commit

Permalink
[IA64] perfmon: fix async exit bug
Browse files Browse the repository at this point in the history
Move the cleanup of the async queue to the close callback from the flush
callback. This avoids losing asynchronous overflow notifications when
the file descriptor is shared by multiple processes and one terminates.

Signed-off-by: Stephane Eranian <eranian@gmail.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
  • Loading branch information
stephane eranian authored and aegl committed Jun 11, 2008
1 parent 28ffb5d commit 8301469
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions arch/ia64/kernel/perfmon.c
Expand Up @@ -1864,11 +1864,6 @@ pfm_flush(struct file *filp, fl_owner_t id)
* invoked after, it will find an empty queue and no
* signal will be sent. In both case, we are safe
*/
if (filp->f_flags & FASYNC) {
DPRINT(("cleaning up async_queue=%p\n", ctx->ctx_async_queue));
pfm_do_fasync (-1, filp, ctx, 0);
}

PROTECT_CTX(ctx, flags);

state = ctx->ctx_state;
Expand Down Expand Up @@ -1999,6 +1994,11 @@ pfm_close(struct inode *inode, struct file *filp)
return -EBADF;
}

if (filp->f_flags & FASYNC) {
DPRINT(("cleaning up async_queue=%p\n", ctx->ctx_async_queue));
pfm_do_fasync(-1, filp, ctx, 0);
}

PROTECT_CTX(ctx, flags);

state = ctx->ctx_state;
Expand Down

0 comments on commit 8301469

Please sign in to comment.