firewire: ohci: fix AT context initialization error handling
Add proper error handling for the context_init() calls. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
7a39d8b821
commit
c088ab30eb
|
@ -3102,11 +3102,15 @@ static int __devinit pci_probe(struct pci_dev *dev,
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto fail_arreq_ctx;
|
goto fail_arreq_ctx;
|
||||||
|
|
||||||
context_init(&ohci->at_request_ctx, ohci,
|
err = context_init(&ohci->at_request_ctx, ohci,
|
||||||
OHCI1394_AsReqTrContextControlSet, handle_at_packet);
|
OHCI1394_AsReqTrContextControlSet, handle_at_packet);
|
||||||
|
if (err < 0)
|
||||||
|
goto fail_arrsp_ctx;
|
||||||
|
|
||||||
context_init(&ohci->at_response_ctx, ohci,
|
err = context_init(&ohci->at_response_ctx, ohci,
|
||||||
OHCI1394_AsRspTrContextControlSet, handle_at_packet);
|
OHCI1394_AsRspTrContextControlSet, handle_at_packet);
|
||||||
|
if (err < 0)
|
||||||
|
goto fail_atreq_ctx;
|
||||||
|
|
||||||
reg_write(ohci, OHCI1394_IsoRecvIntMaskSet, ~0);
|
reg_write(ohci, OHCI1394_IsoRecvIntMaskSet, ~0);
|
||||||
ohci->ir_context_channels = ~0ULL;
|
ohci->ir_context_channels = ~0ULL;
|
||||||
|
@ -3163,7 +3167,9 @@ static int __devinit pci_probe(struct pci_dev *dev,
|
||||||
kfree(ohci->ir_context_list);
|
kfree(ohci->ir_context_list);
|
||||||
kfree(ohci->it_context_list);
|
kfree(ohci->it_context_list);
|
||||||
context_release(&ohci->at_response_ctx);
|
context_release(&ohci->at_response_ctx);
|
||||||
|
fail_atreq_ctx:
|
||||||
context_release(&ohci->at_request_ctx);
|
context_release(&ohci->at_request_ctx);
|
||||||
|
fail_arrsp_ctx:
|
||||||
ar_context_release(&ohci->ar_response_ctx);
|
ar_context_release(&ohci->ar_response_ctx);
|
||||||
fail_arreq_ctx:
|
fail_arreq_ctx:
|
||||||
ar_context_release(&ohci->ar_request_ctx);
|
ar_context_release(&ohci->ar_request_ctx);
|
||||||
|
|
Reference in New Issue