Messages in this thread | | | From | Nadav Amit <> | Subject | Re: [RFC PATCH 1/6] x86/alternative: assert text_mutex is taken | Date | Wed, 29 Aug 2018 17:11:53 +0000 |
| |
at 1:59 AM, Masami Hiramatsu <mhiramat@kernel.org> wrote:
> On Wed, 29 Aug 2018 01:11:42 -0700 > Nadav Amit <namit@vmware.com> wrote: > >> Use lockdep to ensure that text_mutex is taken when text_poke() is >> called. >> >> Actually it is not always taken, specifically when it is called by kgdb, >> so take the lock in these cases. > > Can we really take a mutex in kgdb context? > > kgdb_arch_remove_breakpoint > <- dbg_deactivate_sw_breakpoints > <- kgdb_reenter_check > <- kgdb_handle_exception > <- __kgdb_notify > <- kgdb_ll_trap > <- do_int3 > <- kgdb_notify > <- die notifier > > kgdb_arch_set_breakpoint > <- dbg_activate_sw_breakpoints > <- kgdb_reenter_check > <- kgdb_handle_exception > ... > > Both seems called in exception context, so we can not take a mutex lock. > I think kgdb needs a special path.
You are correct, but I don’t want a special path. Presumably text_mutex is guaranteed not to be taken according to the code.
So I guess the only concern is lockdep. Do you see any problem if I change mutex_lock() into mutex_trylock()? It should always succeed, and I can add a warning and a failure path if it fails for some reason.
| |