From 4d4e09dffd9f3fd59b002bceb93b52ba2e23b803 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 28 Jan 2010 22:11:38 -0500 Subject: [PATCH] --- yaml --- r: 180325 b: refs/heads/master c: 8dd5ca532c2d2c2b85f16bc038ebfff05b8853e1 h: refs/heads/master i: 180323: 09b657bbd8701ba51442e958758b898c891dbdb6 v: v3 --- [refs] | 2 +- trunk/drivers/char/tty_io.c | 4 +--- trunk/fs/befs/linuxvfs.c | 1 + trunk/fs/fcntl.c | 6 ++++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 3207a601b615..ae7d2f5071e5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 80e1e823989ec44d8e35bdfddadbddcffec90424 +refs/heads/master: 8dd5ca532c2d2c2b85f16bc038ebfff05b8853e1 diff --git a/trunk/drivers/char/tty_io.c b/trunk/drivers/char/tty_io.c index dcb9083ecde0..c6f3b48be9dd 100644 --- a/trunk/drivers/char/tty_io.c +++ b/trunk/drivers/char/tty_io.c @@ -1951,10 +1951,8 @@ static int tty_fasync(int fd, struct file *filp, int on) pid = task_pid(current); type = PIDTYPE_PID; } - get_pid(pid); - spin_unlock_irqrestore(&tty->ctrl_lock, flags); retval = __f_setown(filp, pid, type, 0); - put_pid(pid); + spin_unlock_irqrestore(&tty->ctrl_lock, flags); if (retval) goto out; } else { diff --git a/trunk/fs/befs/linuxvfs.c b/trunk/fs/befs/linuxvfs.c index 33baf27fac78..34ddda888e63 100644 --- a/trunk/fs/befs/linuxvfs.c +++ b/trunk/fs/befs/linuxvfs.c @@ -873,6 +873,7 @@ befs_fill_super(struct super_block *sb, void *data, int silent) brelse(bh); unacquire_priv_sbp: + kfree(befs_sb->mount_opts.iocharset); kfree(sb->s_fs_info); unacquire_none: diff --git a/trunk/fs/fcntl.c b/trunk/fs/fcntl.c index 97e01dc0d95f..5ef953e6f908 100644 --- a/trunk/fs/fcntl.c +++ b/trunk/fs/fcntl.c @@ -199,7 +199,9 @@ static int setfl(int fd, struct file * filp, unsigned long arg) static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, int force) { - write_lock_irq(&filp->f_owner.lock); + unsigned long flags; + + write_lock_irqsave(&filp->f_owner.lock, flags); if (force || !filp->f_owner.pid) { put_pid(filp->f_owner.pid); 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, filp->f_owner.euid = cred->euid; } } - write_unlock_irq(&filp->f_owner.lock); + write_unlock_irqrestore(&filp->f_owner.lock, flags); } int __f_setown(struct file *filp, struct pid *pid, enum pid_type type,