Changeset d8b6f64 in libbsdport


Ignore:
Timestamp:
Aug 6, 2009, 7:41:57 PM (10 years ago)
Author:
Till Straumann <strauman@…>
Branches:
master
Children:
dff4df5
Parents:
370f3c5
Message:

2009-08-06 Till Straumann <Till.Straumann@…>

  • libbsdport/rtems_callout.c: fixed possible race condition. callout_stop() must check again from critical/protected section of code if callout is still on the list/active. Otherwise, the callout-task could have executed and removed the callout between callout_stop() checking the p_prev pointer and entering the critical section.
Location:
bsd_eth_drivers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • bsd_eth_drivers/ChangeLog

    r370f3c5 rd8b6f64  
     12009-08-06  Till Straumann <Till.Straumann@TU-Berlin.de>
     2
     3        * libbsdport/rtems_callout.c: fixed possible race
     4        condition. callout_stop() must check again from
     5        critical/protected section of code if callout is still on
     6        the list/active. Otherwise, the callout-task could
     7        have executed and removed the callout between
     8        callout_stop() checking the p_prev pointer and
     9        entering the critical section.
     10
    1112009-08-05  Till Straumann <Till.Straumann@TU-Berlin.de>
    212
  • bsd_eth_drivers/libbsdport/rtems_callout.c

    r370f3c5 rd8b6f64  
    187187
    188188        LIST_LOCK(k);
     189                /* have to check again */
     190                if ( ! c->c_pprev ) {
     191                        LIST_UNLOCK(k);
     192                        return 0;
     193                }
    189194                /* remove from list */
    190195                c_deq(c);
Note: See TracChangeset for help on using the changeset viewer.