HomeFreeBSD

- Fix a race in witness_checkorder() where, between the PCPU_GET() and

Description

  • Fix a race in witness_checkorder() where, between the PCPU_GET() and PCPU_PTR() curthread can migrate on another CPU and get incorrect results.
  • Fix a similar race into witness_warn().
  • Fix the interlock's checks bypassing by correctly using the appropriate children even when the lock_list chunk to be explored is not the first one.
  • Allow witness_warn() to work with spinlocks too.

Bugs found by: tegge
Submitted by: jhb, tegge
Tested by: Giovanni Trematerra <giovanni dot trematerra at gmail dot com>

Details

Provenance
Attilio Rao <attilio@FreeBSD.org>Authored on Oct 16 2008, 12:42 PM
Parents
rG3ff0b2135b5d: Remove a useless global static variable.
Branches
Unknown
Tags
Unknown

Event Timeline