kern/127446: [patch] fix race in sys/dev/kbdmux/kbdmux.c

Maksim Yevmenkin maksim.yevmenkin at gmail.com
Wed Sep 17 18:15:13 UTC 2008


On 9/17/08, Eygene Ryabinkin <rea-fbsd at codelabs.ru> wrote:
> Maxim, good day.
>
>  Cc'ing this discuission to hackers@ -- I was just going to write
>  the separate letter on this topic to the list.
>
>  Wed, Sep 17, 2008 at 09:56:14AM -0700, Maksim Yevmenkin wrote:
>  > have you tried to simply set KBDMUX_LOCK/UNLOCK() to
>  > mtx_lock/unlock(&Giant) ?
>
> Since kbdmux callout is initialized as non-MPSAFE, this will result in
>  double locking the Giant (at least I see it from the code).  I am not
>  sure that this is very good -- had not yet verified that Giant is
>  recursive.

yes, giant is recursive. i think it should be fine for now (and yes, i
agree, its not very clean)

>  Can try it tomorrow.

thanks

>  Since you had written the code and #if 0'ed the locking part, may I ask,
>  why?  Are there any known issues or it was just not very good to
>  introduce locking at that time (rev. 1.1, 3 years ago)?

because i did not want to touch every single keyboard driver, keyboard
subsystem and syscons :) back then. since kbdmux is pretty much
keyboard driver it was easier to leave it under giant locking.

thanks,
max


More information about the freebsd-hackers mailing list