lkml.org 
[lkml]   [2014]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [v3 PATCH 1/1] init: fix race between rootfs mount and firmware loading
From
On Fri, Sep 19, 2014 at 2:41 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 09/18, Roman Pen wrote:
>>
>> +void wait_for_rootfs(void)
>> +{
>> + /* Avoid waiting for ourselves */
>> + if (WARN_ON(is_global_init(current)))
>> + return;
>> + else
>> + wait_event(rootfs_waitq, rootfs_mounted);
>> +}
>
> Ah, wait, the is_global_init() check doesn't look right in any case.
>
> What if /sbin/init does sys_init_module() and this module does
> request_firmware() ?

Yeah, right. It turned out to be more tricky than I expected.
Will fix.

>
> I think we should only warn if init is going to wait,
>
> /* Avoid waiting for ourselves */
> if (rootfs_mounted || WARN_ON(is_global_init(current)))
> return;
>
> __wait_event(rootfs_waitq, rootfs_mounted);
>
>
>> +EXPORT_SYMBOL(wait_for_rootfs);
>
> Why?

CONFIG_FW_LOADER (which includes firmware_class.c to compilation
sequence) is declared as tristate,
thus it can be built as module. Seems I can break loading of this
module if skip exporting, right?

--
Roman


\
 
 \ /
  Last update: 2014-09-19 15:21    [W:0.078 / U:0.652 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site