浏览代码

usb-ccid: fix 61b4887b41b270bc837ead57bc502d904af023bb

QOMification dropped the parent device lookup, fix it.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Gerd Hoffmann 10 年之前
父节点
当前提交
cfda2cef3d
共有 1 个文件被更改,包括 8 次插入8 次删除
  1. 8 8
      hw/usb/dev-smartcard-reader.c

+ 8 - 8
hw/usb/dev-smartcard-reader.c

@@ -1184,7 +1184,7 @@ void ccid_card_send_apdu_to_guest(CCIDCardState *card,
                                   uint8_t *apdu, uint32_t len)
                                   uint8_t *apdu, uint32_t len)
 {
 {
     DeviceState *qdev = DEVICE(card);
     DeviceState *qdev = DEVICE(card);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
     Answer *answer;
     Answer *answer;
 
 
@@ -1207,7 +1207,7 @@ void ccid_card_send_apdu_to_guest(CCIDCardState *card,
 void ccid_card_card_removed(CCIDCardState *card)
 void ccid_card_card_removed(CCIDCardState *card)
 {
 {
     DeviceState *qdev = DEVICE(card);
     DeviceState *qdev = DEVICE(card);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
 
 
     ccid_on_slot_change(s, false);
     ccid_on_slot_change(s, false);
@@ -1218,7 +1218,7 @@ void ccid_card_card_removed(CCIDCardState *card)
 int ccid_card_ccid_attach(CCIDCardState *card)
 int ccid_card_ccid_attach(CCIDCardState *card)
 {
 {
     DeviceState *qdev = DEVICE(card);
     DeviceState *qdev = DEVICE(card);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
 
 
     DPRINTF(s, 1, "CCID Attach\n");
     DPRINTF(s, 1, "CCID Attach\n");
@@ -1231,7 +1231,7 @@ int ccid_card_ccid_attach(CCIDCardState *card)
 void ccid_card_ccid_detach(CCIDCardState *card)
 void ccid_card_ccid_detach(CCIDCardState *card)
 {
 {
     DeviceState *qdev = DEVICE(card);
     DeviceState *qdev = DEVICE(card);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
 
 
     DPRINTF(s, 1, "CCID Detach\n");
     DPRINTF(s, 1, "CCID Detach\n");
@@ -1244,7 +1244,7 @@ void ccid_card_ccid_detach(CCIDCardState *card)
 void ccid_card_card_error(CCIDCardState *card, uint64_t error)
 void ccid_card_card_error(CCIDCardState *card, uint64_t error)
 {
 {
     DeviceState *qdev = DEVICE(card);
     DeviceState *qdev = DEVICE(card);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
 
 
     s->bmCommandStatus = COMMAND_STATUS_FAILED;
     s->bmCommandStatus = COMMAND_STATUS_FAILED;
@@ -1263,7 +1263,7 @@ void ccid_card_card_error(CCIDCardState *card, uint64_t error)
 void ccid_card_card_inserted(CCIDCardState *card)
 void ccid_card_card_inserted(CCIDCardState *card)
 {
 {
     DeviceState *qdev = DEVICE(card);
     DeviceState *qdev = DEVICE(card);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
 
 
     s->bmCommandStatus = COMMAND_STATUS_NO_ERROR;
     s->bmCommandStatus = COMMAND_STATUS_NO_ERROR;
@@ -1275,7 +1275,7 @@ static int ccid_card_exit(DeviceState *qdev)
 {
 {
     int ret = 0;
     int ret = 0;
     CCIDCardState *card = CCID_CARD(qdev);
     CCIDCardState *card = CCID_CARD(qdev);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
 
 
     if (ccid_card_inserted(s)) {
     if (ccid_card_inserted(s)) {
@@ -1289,7 +1289,7 @@ static int ccid_card_exit(DeviceState *qdev)
 static int ccid_card_init(DeviceState *qdev)
 static int ccid_card_init(DeviceState *qdev)
 {
 {
     CCIDCardState *card = CCID_CARD(qdev);
     CCIDCardState *card = CCID_CARD(qdev);
-    USBDevice *dev = USB_DEVICE(qdev);
+    USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent);
     USBCCIDState *s = USB_CCID_DEV(dev);
     USBCCIDState *s = USB_CCID_DEV(dev);
     int ret = 0;
     int ret = 0;