diff --git a/fs/dcache.c b/fs/dcache.c index 99d4d7226203..29d58212aaf0 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -3067,6 +3067,7 @@ SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size) prepend(&cwd, &buflen, "\0", 1); error = prepend_path(&pwd, &root, &cwd, &buflen); br_read_unlock(&vfsmount_lock); + rcu_read_unlock(); if (error < 0) goto out; @@ -3087,10 +3088,10 @@ SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size) } } else { br_read_unlock(&vfsmount_lock); + rcu_read_unlock(); } out: - rcu_read_unlock(); free_page((unsigned long) page); return error; }