summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2018-02-06 09:26:27 +0000
committerDavid Howells <dhowells@redhat.com>2018-02-06 14:22:03 +0000
commite44150157f42219fa5c074588efdb31ccfb197fc (patch)
tree892598b818e0f062821a55a4b914aeecbd9d51f5
parente237f98a9c134c3d600353f21e07db915516875b (diff)
downloadlinux-e44150157f42219fa5c074588efdb31ccfb197fc.tar.bz2
afs: Add missing afs_put_cell()
afs_alloc_volume() needs to release the cell ref it obtained in the case of an error. Fix this by adding an afs_put_cell() call into the error path. This can triggered when a lookup for a cell in a dynamic root or an autocell mount returns an error whilst trying to look up the server (such as ENOMEDIUM). This results in an assertion failure oops when the module is unloaded due to outstanding refs on a cell record. Fixes: d2ddc776a458 ("afs: Overhaul volume and server record caching and fileserver rotation") Signed-off-by: David Howells <dhowells@redhat.com> cc: stable@vger.kernel.org
-rw-r--r--fs/afs/volume.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/afs/volume.c b/fs/afs/volume.c
index 684c48293353..79db9021f140 100644
--- a/fs/afs/volume.c
+++ b/fs/afs/volume.c
@@ -102,6 +102,7 @@ static struct afs_volume *afs_alloc_volume(struct afs_mount_params *params,
error_2:
afs_put_serverlist(params->net, slist);
error_1:
+ afs_put_cell(params->net, volume->cell);
kfree(volume);
error_0:
return ERR_PTR(ret);