Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 9ff99e8 in mainline


Ignore:
Timestamp:
2018-01-15T20:12:32Z (4 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master
Children:
957ea3a
Parents:
a1732929
Message:

xhci: unlock mutex on error

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/xhci/trb_ring.c

    ra1732929 r9ff99e8  
    194194        size_t trbs, uintptr_t *phys)
    195195{
     196        int err;
    196197        assert(trbs > 0);
    197198        fibril_mutex_lock(&ring->guard);
     
    209210        for (size_t i = 0; i < trbs; ++i, ++trb) {
    210211                if (phys && trb_generates_interrupt(trb)) {
    211                         if (*phys)
    212                                 return ENOTSUP;
     212                        if (*phys) {
     213                                err = ENOTSUP;
     214                                goto err;
     215                        }
    213216                        *phys = trb_ring_enqueue_phys(ring);
    214217                }
     
    219222                        trb_ring_resolve_link(ring);
    220223
    221                 if (trb_ring_enqueue_phys(ring) == ring->dequeue)
    222                         goto err_again;
     224                if (trb_ring_enqueue_phys(ring) == ring->dequeue) {
     225                        err = EAGAIN;
     226                        goto err;
     227                }
    223228        }
    224229
     
    252257        return EOK;
    253258
    254 err_again:
     259err:
    255260        ring->enqueue_segment = saved_enqueue_segment;
    256261        ring->enqueue_trb = saved_enqueue_trb;
    257262        fibril_mutex_unlock(&ring->guard);
    258         return EAGAIN;
     263        return err;
    259264}
    260265
Note: See TracChangeset for help on using the changeset viewer.