Re: [PATCH 1/4] module: implement module_inhibit_unload()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux