Date: Thu, 12 Aug 2010 18:37:44 GMT From: John Giacomoni <John.Giacomoni@LineRateSystems.com> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/149586: _callout_stop_safe prematurely unsets CALLOUT_ACTIVE Message-ID: <201008121837.o7CIbiKt096468@www.freebsd.org> Resent-Message-ID: <201008121840.o7CIe3LU091485@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 149586 >Category: kern >Synopsis: _callout_stop_safe prematurely unsets CALLOUT_ACTIVE >Confidential: no >Severity: critical >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Aug 12 18:40:03 UTC 2010 >Closed-Date: >Last-Modified: >Originator: John Giacomoni >Release: 7.3/8.1 >Organization: LineRate Systems >Environment: >Description: in kern/kern_timeout.c _callout_stop_safe(c, 0) prematurely unsets CALLOUT_ACTIVE on inflight callouts making it impossible to know when a callout is actually stopped (one cannot spin on callout_active() to know when it is drained/dead/idle). This is problematic for unsleepable threads that need to deallocate an object shared with a callout but cannot call callout_drain to guarantee that the reference has been implicitly freed. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008121837.o7CIbiKt096468>