mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
[IA64] perfmon: fix async exit bug
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>
This commit is contained in:
parent
28ffb5d3e0
commit
83014699b0
@ -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;
|
||||
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user