History

fnctl: f_modown should call write_lock_irqsave/restore

Commit 703625118069f9f8960d356676662d3db5a9d116 exposed that f_modown() should call write_lock_irqsave instead of just write_lock_irq so that because a caller could have a spinlock held and it would not be good to renable interrupts.

Greg Kroah-Hartman committed 16 years ago

Commit b04da8b1 parent 9a3cbe31 file · +4 −2Browse files

Unified · Split

fs/fcntl.c+4−2
@@ -199,7 +199,9 @@ static int setfl(int fd, struct file * filp, unsigned long arg) · 198 unmodified lines
199199 static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
200200 int force)
201201 {
202− write_lock_irq(&filp->f_owner.lock);
202+ unsigned long flags;
203+
204+ write_lock_irqsave(&filp->f_owner.lock, flags);
203205 if (force || !filp->f_owner.pid) {
204206 put_pid(filp->f_owner.pid);
205207 filp->f_owner.pid = get_pid(pid);
@@ -211,7 +213,7 @@ static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, · 5 unmodified lines
211213 filp->f_owner.euid = cred->euid;
212214 }
213215 }
214− write_unlock_irq(&filp->f_owner.lock);
216+ write_unlock_irqrestore(&filp->f_owner.lock, flags);
215217 }
216218
217219 int __f_setown(struct file *filp, struct pid *pid, enum pid_type type,