On Fri, 17 Nov 2000, Francois romieu wrote:
> CPU A: assume de->count = 1 (in de_put)
> fs/proc/inode.c::44 if (!--de->count) {
> de->count = 0
>
> CPU B: (in remove_proc_entry)
> fs/proc/generic.c::577 if (!de->count)
> fs/proc/generic.c::578 free_proc_entry(de);
>
> CPU A: (in de_put)
> fs/proc/inode.c::45 if (de->deleted) { <-- dereferencing kfreed pointer
>
> What does protect us from the preceding if lock_kernel is thrown ?
Ok, anyway, notice that in line 41 we return from de_put() without
unlock_kernel()'ing the kernel. It doesn't look good.
-- Dan Aloni dax@karrde.org- 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/
This archive was generated by hypermail 2b29 : Thu Nov 23 2000 - 21:00:12 EST