Move FASYNC bit handling to f_op->fasync()
[linux-2.6-block.git] / net / socket.c
index 35dd7371752a9448ff6162af9255ac0b0891ec35..0f75746ab06e29508c028592b4b304b692f00d4b 100644 (file)
@@ -1030,6 +1030,13 @@ static int sock_fasync(int fd, struct file *filp, int on)
 
        lock_sock(sk);
 
+       spin_lock(&filp->f_lock);
+       if (on)
+               filp->f_flags |= FASYNC;
+       else
+               filp->f_flags &= ~FASYNC;
+       spin_unlock(&filp->f_lock);
+
        prev = &(sock->fasync_list);
 
        for (fa = *prev; fa != NULL; prev = &fa->fa_next, fa = *prev)