mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 05:04:09 +08:00
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: d2ddc776a4
("afs: Overhaul volume and server record caching and fileserver rotation")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: stable@vger.kernel.org
This commit is contained in:
parent
e237f98a9c
commit
e44150157f
@ -102,6 +102,7 @@ static struct afs_volume *afs_alloc_volume(struct afs_mount_params *params,
|
|||||||
error_2:
|
error_2:
|
||||||
afs_put_serverlist(params->net, slist);
|
afs_put_serverlist(params->net, slist);
|
||||||
error_1:
|
error_1:
|
||||||
|
afs_put_cell(params->net, volume->cell);
|
||||||
kfree(volume);
|
kfree(volume);
|
||||||
error_0:
|
error_0:
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
|
Loading…
Reference in New Issue
Block a user