From 3d6bb422deabffacee6f64e4e6d3fee7e9cfec4d Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 29 Jun 2010 15:05:42 -0700 Subject: [PATCH] --- yaml --- r: 200653 b: refs/heads/master c: f4985dc714d7ab1920c5aa502b7f4073fa1b4177 h: refs/heads/master i: 200651: 04f8c6e5fcbf4ab131e18ec122028f1f4ad1b63d v: v3 --- [refs] | 2 +- trunk/fs/fcntl.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 634fb0c65b92..0cf12a358b4f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fb967ecc584c20c74a007de749ca597068b0fcac +refs/heads/master: f4985dc714d7ab1920c5aa502b7f4073fa1b4177 diff --git a/trunk/fs/fcntl.c b/trunk/fs/fcntl.c index 51e11bf5708f..9d175d623aab 100644 --- a/trunk/fs/fcntl.c +++ b/trunk/fs/fcntl.c @@ -733,12 +733,14 @@ static void kill_fasync_rcu(struct fasync_struct *fa, int sig, int band) { while (fa) { struct fown_struct *fown; + unsigned long flags; + if (fa->magic != FASYNC_MAGIC) { printk(KERN_ERR "kill_fasync: bad magic number in " "fasync_struct!\n"); return; } - spin_lock(&fa->fa_lock); + spin_lock_irqsave(&fa->fa_lock, flags); if (fa->fa_file) { fown = &fa->fa_file->f_owner; /* Don't send SIGURG to processes which have not set a @@ -747,7 +749,7 @@ static void kill_fasync_rcu(struct fasync_struct *fa, int sig, int band) if (!(sig == SIGURG && fown->signum == 0)) send_sigio(fown, fa->fa_fd, band); } - spin_unlock(&fa->fa_lock); + spin_unlock_irqrestore(&fa->fa_lock, flags); fa = rcu_dereference(fa->fa_next); } }