Changeset 6d87dce in mainline


Ignore:
Timestamp:
2016-05-04T17:39:46Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
650cd22
Parents:
9a08e6b
Message:

Use raw fibril synchronization in fibril_setup()

With some configurations, fibril_lock/unlock() may attempt to access TLS.
We therefore need to be careful in fibril_setup(), which is called before
tcb_setup(), to use fibril_down/up() instead.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/fibril.c

    r9a08e6b r6d87dce  
    114114        fibril->waits_for = NULL;
    115115
    116         futex_lock(&fibril_futex);
     116        /*
     117         * We are called before __tcb_set(), so we need to use
     118         * futex_down/up() instead of futex_lock/unlock() that
     119         * may attempt to access TLS.
     120         */
     121        futex_down(&fibril_futex);
    117122        list_append(&fibril->all_link, &fibril_list);
    118         futex_unlock(&fibril_futex);
     123        futex_up(&fibril_futex);
    119124       
    120125        return fibril;
Note: See TracChangeset for help on using the changeset viewer.