kern/174236: "kldunload ipdivert" corrupts kernel

Eitan Adler lists at eitanadler.com
Fri Dec 7 18:50:01 UTC 2012


The following reply was made to PR kern/174236; it has been noted by GNATS.

From: Eitan Adler <lists at eitanadler.com>
To: Lutz Donnerhacke <lutz at donnerhacke.de>
Cc: freebsd-bugs at freebsd.org, bug-followup <bug-followup at freebsd.org>
Subject: Re: kern/174236: "kldunload ipdivert" corrupts kernel
Date: Fri, 7 Dec 2012 13:42:29 -0500

 On 7 December 2012 09:50, Lutz Donnerhacke <lutz at donnerhacke.de> wrote:
 > The following reply was made to PR kern/174236; it has been noted by GNATS.
 >
 > From: Lutz Donnerhacke <lutz at donnerhacke.de>
 > To: bug-followup at FreeBSD.org
 > Cc:
 > Subject: Re: kern/174236: "kldunload ipdivert" corrupts kernel
 > Date: Fri, 7 Dec 2012 15:45:00 +0100
 >
 >  Any module which returns an error on unload will cause the problem.
 >  It's not specific to ipdivert.ko or ipfw.ko or anything else.
 >
 >  Relevant code section is:
 >
 >  static int
 >  div_modevent(module_t mod, int type, void *unused)
 >  {
 >          int err = 0;
 >          switch (type) {
 >         [...]
 >          case MOD_QUIESCE:
 >                 err = EPERM;
 >                 break;
 >         [...]
 >         }
 >          return err;
 >  }
 >
 >  Please note: Forced unload of ipdivert.ko works fine.
 
 If you are able and willing to debug:
 
 <avg> I'd recommend him to enter debugger and run ps there
 <avg> and get backtraces of the hanging threads
 <dwhite-> it sounds like a leaked lock in the error case
 
 If not, just leaving this here for the record ;)
 
 
 -- 
 Eitan Adler


More information about the freebsd-bugs mailing list