afs: Fix some dentry handling in dir ops and missing key_puts
authorDavid Howells <dhowells@redhat.com>
Mon, 20 Nov 2017 23:04:08 +0000 (23:04 +0000)
committerDavid Howells <dhowells@redhat.com>
Fri, 24 Nov 2017 10:56:51 +0000 (10:56 +0000)
commitbc1527dcb422ead9e1808def6824b4c0e469cc1c
tree75a8f9bfccc94685d6822235a9296bae3360c3a4
parent5a039c32271b9aaa1103e9b64412f520e72b67d3
afs: Fix some dentry handling in dir ops and missing key_puts

Fix some of dentry handling in AFS directory ops:

 (1) Do d_drop() on the new_dentry before assigning a new inode to it in
     afs_vnode_new_inode().  It's fine to do this before calling afs_iget()
     because the operation has taken place on the server.

 (2) Replace d_instantiate()/d_rehash() with d_add().

 (3) Don't d_drop() the new_dentry in afs_rename() on error.

Also fix afs_link() and afs_rename() to call key_put() on all error paths
where the key is taken.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/dir.c