vfs server: fix dangling alloc on watch failure

This patch reverts the vfs-watch-handle creation whenever the subsequent
allocation of the VFS server's 'Watch' object fails. This can happen
when the session RAM or cap quota is depleted.

Fixes 
This commit is contained in:
Norman Feske 2022-04-07 14:53:05 +02:00 committed by Christian Helmuth
parent df1767b784
commit 79279b93fb

@ -590,10 +590,16 @@ class Vfs_server::Session_component : private Session_resources,
throw Out_of_caps();
}
Node &node = *new (_alloc)
Watch_node(_node_space, path_str, *vfs_handle, *this);
try {
Node &node = *new (_alloc)
Watch_node(_node_space, path_str, *vfs_handle, *this);
return Watch_handle { node.id().value };
return Watch_handle { node.id().value };
}
catch (...) {
vfs_handle->close();
throw;
}
}
void close(Node_handle handle) override