Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Jan 2010 15:54:21 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/kern kern_mutex.c sched_4bsd.c sched_ule.c
Message-ID:  <201001231554.o0NFsWX4072658@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
attilio     2010-01-23 15:54:21 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             kern_mutex.c sched_4bsd.c sched_ule.c 
  Log:
  SVN rev 202889 on 2010-01-23 15:54:21Z by attilio
  
  - Fix a race in sched_switch() of sched_4bsd.
    In the case of the thread being on a sleepqueue or a turnstile, the
    sched_lock was acquired (without the aid of the td_lock interface) and
    the td_lock was dropped. This was going to break locking rules on other
    threads willing to access to the thread (via the td_lock interface) and
    modify his flags (allowed as long as the container lock was different
    by the one used in sched_switch).
    In order to prevent this situation, while sched_lock is acquired there
    the td_lock gets blocked. [0]
  - Merge the ULE's internal function thread_block_switch() into the global
    thread_lock_block() and make the former semantic as the default for
    thread_lock_block(). This means that thread_lock_block() will not
    disable interrupts when called (and consequently thread_unlock_block()
    will not re-enabled them when called). This should be done manually
    when necessary.
    Note, however, that ULE's thread_unblock_switch() is not reaped
    because it does reflect a difference in semantic due in ULE (the
    td_lock may not be necessarilly still blocked_lock when calling this).
    While asymmetric, it does describe a remarkable difference in semantic
    that is good to keep in mind.
  
  [0] Reported by:        Kohji Okuno
                          <okuno dot kohji at jp dot panasonic dot com>
  Tested by:              Giovanni Trematerra
                          <giovanni dot trematerra at gmail dot com>
  MFC:                    2 weeks
  
  Revision  Changes    Path
  1.218     +0 -2      src/sys/kern/kern_mutex.c
  1.135     +5 -2      src/sys/kern/sched_4bsd.c
  1.264     +6 -21     src/sys/kern/sched_ule.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001231554.o0NFsWX4072658>