lkml.org 
[lkml]   [2000]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: execve replacement.
John Levon wrote:
> anyway, you can just put refcounts in your hijacked system calls; that is
> the safe way to do it, and doesn't require any kernel patches, just extra
> cost in the intercepted system calls.
>
> e.g. :
>
> my_syswhatever(...)
> {
> MOD_INC_USE_COUNT;
> original_syswhatever(...);
> MOD_DEC_USE_COUNT;
> }
>
> Can you explain to me the race with this approach ?

There is a small period of time between the last MOD_DEC_USE_COUNT and
the return of the function where the module could be unloaded by another
CPU (SMP only). It is a tiny race window, but still possible.

MOD_DEC_USE_COUNT is only safe if it does not reduce the use count to
zero. The only exceptions to this are if the caller to the module takes
the Big Kernel Lock or unload_lock. This race was brought to light
because lock_kernel() was removed from the open path in the VFS. Any
time you call through a function pointer that could possibly be in an
unreferenced module, you need to use try_inc_mod_count() before calling.

--

Brian Gerst
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:39    [W:0.061 / U:0.116 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site