]> err.no Git - linux-2.6/blobdiff - fs/locks.c
Bug in mm/thrash.c function grab_swap_token()
[linux-2.6] / fs / locks.c
index 671a034dc999fffdf88856401694fda0cef87147..8ec16ab5ef7449222744b3c2829e37fbf8f6d88b 100644 (file)
@@ -669,7 +669,6 @@ posix_test_lock(struct file *filp, struct file_lock *fl)
 {
        struct file_lock *cfl;
 
-       fl->fl_type = F_UNLCK;
        lock_kernel();
        for (cfl = filp->f_path.dentry->d_inode->i_flock; cfl; cfl = cfl->fl_next) {
                if (!IS_POSIX(cfl))
@@ -681,7 +680,8 @@ posix_test_lock(struct file *filp, struct file_lock *fl)
                __locks_copy_lock(fl, cfl);
                unlock_kernel();
                return 1;
-       }
+       } else
+               fl->fl_type = F_UNLCK;
        unlock_kernel();
        return 0;
 }
@@ -1632,6 +1632,7 @@ static int posix_lock_to_flock(struct flock *flock, struct file_lock *fl)
        flock->l_len = fl->fl_end == OFFSET_MAX ? 0 :
                fl->fl_end - fl->fl_start + 1;
        flock->l_whence = 0;
+       flock->l_type = fl->fl_type;
        return 0;
 }