diff options
-rw-r--r-- | drivers/firewire/core-cdev.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c index ce8cb6fcbbcd..8cbc2b8a8272 100644 --- a/drivers/firewire/core-cdev.c +++ b/drivers/firewire/core-cdev.c | |||
@@ -106,6 +106,7 @@ struct outbound_transaction_resource { | |||
106 | 106 | ||
107 | struct inbound_transaction_resource { | 107 | struct inbound_transaction_resource { |
108 | struct client_resource resource; | 108 | struct client_resource resource; |
109 | struct fw_card *card; | ||
109 | struct fw_request *request; | 110 | struct fw_request *request; |
110 | void *data; | 111 | void *data; |
111 | size_t length; | 112 | size_t length; |
@@ -625,8 +626,7 @@ static void release_request(struct client *client, | |||
625 | if (is_fcp_request(r->request)) | 626 | if (is_fcp_request(r->request)) |
626 | kfree(r->data); | 627 | kfree(r->data); |
627 | else | 628 | else |
628 | fw_send_response(client->device->card, r->request, | 629 | fw_send_response(r->card, r->request, RCODE_CONFLICT_ERROR); |
629 | RCODE_CONFLICT_ERROR); | ||
630 | kfree(r); | 630 | kfree(r); |
631 | } | 631 | } |
632 | 632 | ||
@@ -646,6 +646,7 @@ static void handle_request(struct fw_card *card, struct fw_request *request, | |||
646 | if (r == NULL || e == NULL) | 646 | if (r == NULL || e == NULL) |
647 | goto failed; | 647 | goto failed; |
648 | 648 | ||
649 | r->card = card; | ||
649 | r->request = request; | 650 | r->request = request; |
650 | r->data = payload; | 651 | r->data = payload; |
651 | r->length = length; | 652 | r->length = length; |
@@ -765,7 +766,7 @@ static int ioctl_send_response(struct client *client, union ioctl_arg *arg) | |||
765 | kfree(r->request); | 766 | kfree(r->request); |
766 | goto out; | 767 | goto out; |
767 | } | 768 | } |
768 | fw_send_response(client->device->card, r->request, a->rcode); | 769 | fw_send_response(r->card, r->request, a->rcode); |
769 | out: | 770 | out: |
770 | kfree(r); | 771 | kfree(r); |
771 | 772 | ||