[Qemu-devel] [PATCH] usb/dev-smartcard-reader: convert to realize

Mao Zhongyi posted 1 patch 6 years, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170909083001.17451-1-maozy.fnst@cn.fujitsu.com
Test checkpatch passed
Test docker passed
Test s390x passed
hw/usb/dev-smartcard-reader.c | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
[Qemu-devel] [PATCH] usb/dev-smartcard-reader: convert to realize
Posted by Mao Zhongyi 6 years, 7 months ago
Convert CCID Device to realize and rename the ccid_card_init()
to ccid_card_realize().

Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com>
---
 hw/usb/dev-smartcard-reader.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
index bef1f03..27cd48d 100644
--- a/hw/usb/dev-smartcard-reader.c
+++ b/hw/usb/dev-smartcard-reader.c
@@ -1306,27 +1306,25 @@ static int ccid_card_exit(DeviceState *qdev)
     return 0;
 }
 
-static int ccid_card_init(DeviceState *qdev)
+static void ccid_card_realize(DeviceState *qdev, Error **errp)
 {
     CCIDCardState *card = CCID_CARD(qdev);
     USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
-    int ret = 0;
 
     if (card->slot != 0) {
-        warn_report("usb-ccid supports one slot, can't add %d",
+        error_setg(errp, "usb-ccid supports one slot, can't add %d",
                     card->slot);
-        return -1;
+        return;
     }
     if (s->card != NULL) {
-        warn_report("usb-ccid card already full, not adding");
-        return -1;
+        error_setg(errp, "usb-ccid card already full, not adding");
+        return;
     }
-    ret = ccid_card_initfn(card);
-    if (ret == 0) {
+
+    if (!ccid_card_initfn(card)) {
         s->card = card;
     }
-    return ret;
 }
 
 static void ccid_realize(USBDevice *dev, Error **errp)
@@ -1496,7 +1494,7 @@ static void ccid_card_class_init(ObjectClass *klass, void *data)
 {
     DeviceClass *k = DEVICE_CLASS(klass);
     k->bus_type = TYPE_CCID_BUS;
-    k->init = ccid_card_init;
+    k->realize = ccid_card_realize;
     k->exit = ccid_card_exit;
     k->props = ccid_props;
 }
-- 
2.9.4




Re: [Qemu-devel] [PATCH] usb/dev-smartcard-reader: convert to realize
Posted by Marc-André Lureau 6 years, 7 months ago
Hi

On Sat, Sep 9, 2017 at 10:33 AM Mao Zhongyi <maozy.fnst@cn.fujitsu.com>
wrote:

> Convert CCID Device to realize and rename the ccid_card_init()
> to ccid_card_realize().
>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com>
> ---
>  hw/usb/dev-smartcard-reader.c | 18 ++++++++----------
>  1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
> index bef1f03..27cd48d 100644
> --- a/hw/usb/dev-smartcard-reader.c
> +++ b/hw/usb/dev-smartcard-reader.c
> @@ -1306,27 +1306,25 @@ static int ccid_card_exit(DeviceState *qdev)
>      return 0;
>  }
>
> -static int ccid_card_init(DeviceState *qdev)
> +static void ccid_card_realize(DeviceState *qdev, Error **errp)
>  {
>      CCIDCardState *card = CCID_CARD(qdev);
>      USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
>      USBCCIDState *s = USB_CCID_DEV(dev);
> -    int ret = 0;
>
>      if (card->slot != 0) {
> -        warn_report("usb-ccid supports one slot, can't add %d",
> +        error_setg(errp, "usb-ccid supports one slot, can't add %d",
>                      card->slot);
> -        return -1;
> +        return;
>      }
>      if (s->card != NULL) {
> -        warn_report("usb-ccid card already full, not adding");
> -        return -1;
> +        error_setg(errp, "usb-ccid card already full, not adding");
> +        return;
>      }
> -    ret = ccid_card_initfn(card);
> -    if (ret == 0) {
> +
> +    if (!ccid_card_initfn(card)) {
>          s->card = card;
>      }
>

You should set an error here, or the caller won't be aware of card init
error anymore. Best would be to convert ccid_card_initfn() and callbacks to
take an Error **.

-    return ret;
>  }
>
>  static void ccid_realize(USBDevice *dev, Error **errp)
> @@ -1496,7 +1494,7 @@ static void ccid_card_class_init(ObjectClass *klass,
> void *data)
>  {
>      DeviceClass *k = DEVICE_CLASS(klass);
>      k->bus_type = TYPE_CCID_BUS;
> -    k->init = ccid_card_init;
> +    k->realize = ccid_card_realize;
>      k->exit = ccid_card_exit;
>      k->props = ccid_props;
>  }
> --
> 2.9.4
>
>
>
>
> --
Marc-André Lureau
Re: [Qemu-devel] [PATCH] usb/dev-smartcard-reader: convert to realize
Posted by Mao Zhongyi 6 years, 7 months ago

On 09/09/2017 05:20 PM, Marc-André Lureau wrote:
> Hi
>
> On Sat, Sep 9, 2017 at 10:33 AM Mao Zhongyi <maozy.fnst@cn.fujitsu.com <mailto:maozy.fnst@cn.fujitsu.com>> wrote:
>
>     Convert CCID Device to realize and rename the ccid_card_init()
>     to ccid_card_realize().
>
>     Cc: Gerd Hoffmann <kraxel@redhat.com <mailto:kraxel@redhat.com>>
>     Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com <mailto:maozy.fnst@cn.fujitsu.com>>
>     ---
>      hw/usb/dev-smartcard-reader.c | 18 ++++++++----------
>      1 file changed, 8 insertions(+), 10 deletions(-)
>
>     diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c
>     index bef1f03..27cd48d 100644
>     --- a/hw/usb/dev-smartcard-reader.c
>     +++ b/hw/usb/dev-smartcard-reader.c
>     @@ -1306,27 +1306,25 @@ static int ccid_card_exit(DeviceState *qdev)
>          return 0;
>      }
>
>     -static int ccid_card_init(DeviceState *qdev)
>     +static void ccid_card_realize(DeviceState *qdev, Error **errp)
>      {
>          CCIDCardState *card = CCID_CARD(qdev);
>          USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
>          USBCCIDState *s = USB_CCID_DEV(dev);
>     -    int ret = 0;
>
>          if (card->slot != 0) {
>     -        warn_report("usb-ccid supports one slot, can't add %d",
>     +        error_setg(errp, "usb-ccid supports one slot, can't add %d",
>                          card->slot);
>     -        return -1;
>     +        return;
>          }
>          if (s->card != NULL) {
>     -        warn_report("usb-ccid card already full, not adding");
>     -        return -1;
>     +        error_setg(errp, "usb-ccid card already full, not adding");
>     +        return;
>          }
>     -    ret = ccid_card_initfn(card);
>     -    if (ret == 0) {
>     +
>     +    if (!ccid_card_initfn(card)) {
>              s->card = card;
>          }
>
>
> You should set an error here, or the caller won't be aware of card init error anymore. Best would be to convert ccid_card_initfn() and callbacks to take an Error **.

Thanks for the info, I will.

--
Mao

>
>     -    return ret;
>      }
>
>      static void ccid_realize(USBDevice *dev, Error **errp)
>     @@ -1496,7 +1494,7 @@ static void ccid_card_class_init(ObjectClass *klass, void *data)
>      {
>          DeviceClass *k = DEVICE_CLASS(klass);
>          k->bus_type = TYPE_CCID_BUS;
>     -    k->init = ccid_card_init;
>     +    k->realize = ccid_card_realize;
>          k->exit = ccid_card_exit;
>          k->props = ccid_props;
>      }
>     --
>     2.9.4
>
>
>
>
> --
> Marc-André Lureau