Преглед на файлове

tun: fasync BKL pushdown

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Jonathan Corbet преди 17 години
родител
ревизия
9d31952257
променени са 1 файла, в които са добавени 7 реда и са изтрити 4 реда
  1. 7 4
      drivers/net/tun.c

+ 7 - 4
drivers/net/tun.c

@@ -782,18 +782,21 @@ static int tun_chr_fasync(int fd, struct file *file, int on)
 
 	DBG(KERN_INFO "%s: tun_chr_fasync %d\n", tun->dev->name, on);
 
+	lock_kernel();
 	if ((ret = fasync_helper(fd, file, on, &tun->fasync)) < 0)
-		return ret;
+		goto out;
 
 	if (on) {
 		ret = __f_setown(file, task_pid(current), PIDTYPE_PID, 0);
 		if (ret)
-			return ret;
+			goto out;
 		tun->flags |= TUN_FASYNC;
 	} else
 		tun->flags &= ~TUN_FASYNC;
-
-	return 0;
+	ret = 0;
+out:
+	unlock_kernel();
+	return ret;
 }
 
 static int tun_chr_open(struct inode *inode, struct file * file)