Loading drivers/char/raw.c +1 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ static int raw_open(struct inode *inode, struct file *filp) blkdev_put(bdev, filp->f_mode); out: mutex_unlock(&raw_mutex); unlock_kernel(); return err; } Loading fs/fcntl.c +7 −3 Original line number Diff line number Diff line Loading @@ -531,6 +531,12 @@ int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fap if (!new) return -ENOMEM; } /* * We need to take f_lock first since it's not an IRQ-safe * lock. */ spin_lock(&filp->f_lock); write_lock_irq(&fasync_lock); for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) { if (fa->fa_file == filp) { Loading @@ -555,14 +561,12 @@ int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fap result = 1; } out: /* Fix up FASYNC bit while still holding fasync_lock */ spin_lock(&filp->f_lock); if (on) filp->f_flags |= FASYNC; else filp->f_flags &= ~FASYNC; spin_unlock(&filp->f_lock); write_unlock_irq(&fasync_lock); spin_unlock(&filp->f_lock); return result; } Loading include/linux/fs.h +1 −1 Original line number Diff line number Diff line Loading @@ -849,7 +849,7 @@ struct file { #define f_dentry f_path.dentry #define f_vfsmnt f_path.mnt const struct file_operations *f_op; spinlock_t f_lock; /* f_ep_links, f_flags */ spinlock_t f_lock; /* f_ep_links, f_flags, no IRQ */ atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; Loading Loading
drivers/char/raw.c +1 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ static int raw_open(struct inode *inode, struct file *filp) blkdev_put(bdev, filp->f_mode); out: mutex_unlock(&raw_mutex); unlock_kernel(); return err; } Loading
fs/fcntl.c +7 −3 Original line number Diff line number Diff line Loading @@ -531,6 +531,12 @@ int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fap if (!new) return -ENOMEM; } /* * We need to take f_lock first since it's not an IRQ-safe * lock. */ spin_lock(&filp->f_lock); write_lock_irq(&fasync_lock); for (fp = fapp; (fa = *fp) != NULL; fp = &fa->fa_next) { if (fa->fa_file == filp) { Loading @@ -555,14 +561,12 @@ int fasync_helper(int fd, struct file * filp, int on, struct fasync_struct **fap result = 1; } out: /* Fix up FASYNC bit while still holding fasync_lock */ spin_lock(&filp->f_lock); if (on) filp->f_flags |= FASYNC; else filp->f_flags &= ~FASYNC; spin_unlock(&filp->f_lock); write_unlock_irq(&fasync_lock); spin_unlock(&filp->f_lock); return result; } Loading
include/linux/fs.h +1 −1 Original line number Diff line number Diff line Loading @@ -849,7 +849,7 @@ struct file { #define f_dentry f_path.dentry #define f_vfsmnt f_path.mnt const struct file_operations *f_op; spinlock_t f_lock; /* f_ep_links, f_flags */ spinlock_t f_lock; /* f_ep_links, f_flags, no IRQ */ atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; Loading