Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Jan 2004 14:55:46 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/kern kern_intr.c
Message-ID:  <200401132255.i0DMtk0H071956@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
truckman    2004/01/13 14:55:46 PST

  FreeBSD src repository

  Modified files:
    sys/kern             kern_intr.c 
  Log:
  If a device attach routine fails during boot and calls bus_teardown_intr(),
  ithread_remove_handler() may fail to remove the interrupt handler if
  it decides to let the ithread do the removal.  The problem is that during
  boot "cold" is set, which causes msleep() to return immediately.  This
  will cause ithread_remove_handler() to fail to wait for the ithread
  to do the removal from the handler TAILQ before freeing the handler
  back to the heap.  Bad things will happen when some other user of the
  TAILQ, such as ithread_add_handler() or the actual ithread attempts to use
  the freed handler.  Fix the problem by forcing ithread_remove_handler()
  to do the actual removal itself if the "cold" flag is set.
  
  Reviewed by:    jhb
  
  Revision  Changes    Path
  1.104     +5 -1      src/sys/kern/kern_intr.c



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