[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 062/104] virtiofsd: Handle hard reboot
From: |
Daniel P . Berrangé |
Subject: |
Re: [PATCH 062/104] virtiofsd: Handle hard reboot |
Date: |
Tue, 7 Jan 2020 11:14:37 +0000 |
User-agent: |
Mutt/1.12.1 (2019-06-15) |
On Thu, Dec 12, 2019 at 04:38:22PM +0000, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <address@hidden>
>
> Handle a
> mount
> hard reboot (without unmount)
> mount
>
> we get another 'init' which FUSE doesn't normally expect.
>
> Signed-off-by: Dr. David Alan Gilbert <address@hidden>
> ---
> tools/virtiofsd/fuse_lowlevel.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/tools/virtiofsd/fuse_lowlevel.c b/tools/virtiofsd/fuse_lowlevel.c
> index 2d1d1a2e59..45125ef66a 100644
> --- a/tools/virtiofsd/fuse_lowlevel.c
> +++ b/tools/virtiofsd/fuse_lowlevel.c
> @@ -2436,7 +2436,21 @@ void fuse_session_process_buf_int(struct fuse_session
> *se,
> goto reply_err;
> }
> } else if (in->opcode == FUSE_INIT || in->opcode == CUSE_INIT) {
> - goto reply_err;
> + if (fuse_lowlevel_is_virtio(se)) {
> + /*
> + * TODO: This is after a hard reboot typically, we need to do
> + * a destroy, but we can't reply to this request yet so
> + * we can't use do_destroy
> + */
> + fuse_log(FUSE_LOG_DEBUG, "%s: reinit\n", __func__);
> + se->got_destroy = 1;
> + se->got_init = 0;
> + if (se->op.destroy) {
> + se->op.destroy(se->userdata);
> + }
> + } else {
> + goto reply_err;
> + }
In doing this, is there any danger we're exposed to from a malicious
guest which does
mount
mount
without a reboot in between ?
I'm thinking not so if its ok, then
Reviewed-by: Daniel P. Berrangé <address@hidden>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- Re: [PATCH 062/104] virtiofsd: Handle hard reboot,
Daniel P . Berrangé <=