Re: [PATCH] server: Avoid sync bug when NBD_OPT_GO fails with ERR_POLICY
On Wed, Feb 21, 2024 at 02:05:28PM -0600, Eric Blake wrote:
> It is imperative that all client data is consumed when replying with
> error to NBD_OPT_GO, so that the server will still be in sync if the
> client attempts another NBD_OPT_* command. We got this right a couple
> lines earlier when server is NULL, but leave unread client data when
> commit_client() fails.
Thanks, merged.
> Fixes: e6b56c12 ("Merge branch 'extension-info'", 3.16)
> Signed-off-by: Eric Blake <eblake@redhat.com>
> ---
> nbd-server.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/nbd-server.c b/nbd-server.c
> index 216eb00..875c16f 100644
> --- a/nbd-server.c
> +++ b/nbd-server.c
> @@ -2607,6 +2607,8 @@ static bool handle_info(CLIENT* client, uint32_t opt, GArray* servers, uint32_t
> if (opt == NBD_OPT_GO) {
> client->clientfeats = cflags;
> if(!commit_client(client, server)) {
> + consume(client, n_requests * sizeof(request), buf,
> + sizeof(buf));
> send_reply(client, opt, NBD_REP_ERR_POLICY, -1, "Access denied by server configuration");
> return false;
> }
> --
> 2.43.2
>
>
--
w@uter.{be,co.za}
wouter@{grep.be,fosdem.org,debian.org}
I will have a Tin-Actinium-Potassium mixture, thanks.
Reply to: