Re: [PATCH spice] smartcard: set char device state

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi
On Mon, Aug 20, 2018 at 2:06 PM Frediano Ziglio <fziglio@xxxxxxxxxx> wrote:
>
> Without proper testing I would say Nack.
> I though we agreed on this.

I have done manual testing. We don't have any smartcard channel test
in spice, afaik.

What you asked me about disabling the device from the guest is
unrelated to this change imho.

Please reconsider merging this, it is not changing any current logic,
just informing qemu about channel state to avoid useless work.

>
> Frediano
>
> >
> > ping
> > On Tue, Aug 7, 2018 at 5:27 PM <marcandre.lureau@xxxxxxxxxx> wrote:
> > >
> > > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx>
> > >
> > > Follow all other char devices implementation (spicevmc, agent,
> > > stream-device) and set the char device state when
> > > connected/disconnected. This allows qemu to discard writes, optimize a
> > > bit the source polling, and will trigger HUP events.
> > >
> > > See related qemu "char/spice: discard write() if backend is
> > > disconnected".
> > >
> > > Note: sif->state() should probably be handled at the char-device
> > > level. I am not sure what the smartcard channel really brings over
> > > plain spicevmc...
> > >
> > > Signed-off-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx>
> > > ---
> > >  server/smartcard.c | 15 +++++++++++++++
> > >  1 file changed, 15 insertions(+)
> > >
> > > diff --git a/server/smartcard.c b/server/smartcard.c
> > > index 2cb68e06..403805a8 100644
> > > --- a/server/smartcard.c
> > > +++ b/server/smartcard.c
> > > @@ -343,6 +343,11 @@ void
> > > smartcard_char_device_attach_client(SpiceCharDeviceInstance *char_device,
> > >          dev->priv->scc = NULL;
> > >          smartcard_channel_client_set_char_device(scc, NULL);
> > >          red_channel_client_disconnect(RED_CHANNEL_CLIENT(scc));
> > > +    } else {
> > > +        SpiceCharDeviceInterface *sif =
> > > spice_char_device_get_interface(char_device);
> > > +        if (sif->state) {
> > > +            sif->state(char_device, 1);
> > > +        }
> > >      }
> > >  }
> > >
> > > @@ -373,11 +378,21 @@ gboolean
> > > smartcard_char_device_notify_reader_remove(RedCharDeviceSmartcard *dev)
> > >  void smartcard_char_device_detach_client(RedCharDeviceSmartcard
> > >  *smartcard,
> > >                                           SmartCardChannelClient *scc)
> > >  {
> > > +    SpiceCharDeviceInterface *sif;
> > > +    SpiceCharDeviceInstance *sin;
> > > +
> > > +    g_object_get(smartcard, "sin", &sin, NULL);
> > > +    sif = spice_char_device_get_interface(sin);
> > > +
> > >      spice_assert(smartcard->priv->scc == scc);
> > >      red_char_device_client_remove(RED_CHAR_DEVICE(smartcard),
> > >                                    red_channel_client_get_client(RED_CHANNEL_CLIENT(scc)));
> > >      smartcard_channel_client_set_char_device(scc, NULL);
> > >      smartcard->priv->scc = NULL;
> > > +
> > > +    if (sif->state) {
> > > +        sif->state(sin, 0);
> > > +    }
> > >  }
> > >
> > >  SmartCardChannelClient*
> > >  smartcard_char_device_get_client(RedCharDeviceSmartcard *smartcard)
> > > --
> > > 2.18.0.547.g1d89318c48
> > >
> > > _______________________________________________
> > > Spice-devel mailing list
> > > Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> > > https://lists.freedesktop.org/mailman/listinfo/spice-devel
> >
> >
> >
> > --
> > Marc-André Lureau
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel@xxxxxxxxxxxxxxxxxxxxx
> > https://lists.freedesktop.org/mailman/listinfo/spice-devel
> >



-- 
Marc-André Lureau
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]