Hi, Tejun,

I was just looking over these changes...

> +     /* Don't proceed till inhibition is lifted. */
> +     add_wait_queue(&module_unload_wait, &wait);
> +     set_current_state(TASK_UNINTERRUPTIBLE);
> +     if (atomic_read(&module_unload_inhibit_cnt))
> +             schedule();
> +     __set_current_state(TASK_RUNNING);
> +     remove_wait_queue(&module_unload_wait, &wait);
> +
> +     mutex_lock(&module_mutex);

Maybe I'm missing something, but this looks racy to me.  There's no
check after schedule() to see if module_unload_inhibit_cnt is really
zero, and nothing to keep somebody else from slipping in and raising it
again afterward.

Given your description of this tool as a "sledgehammer," might it not be
easier to just take and hold module_mutex for the duration of the unload
block?

jon

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to