[OE-core] [PATCH] kernel.bbclass: Fix race condition

Bruce Ashfield bruce.ashfield at gmail.com
Fri May 1 14:31:32 UTC 2015


On Fri, May 1, 2015 at 10:28 AM, Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
> On Tue, 2015-04-14 at 19:56 +0300, Ed Bartosh wrote:
>> Race condition between do_compile_kernelmodules and do_shared_workdir
>> tasks occurs when do_compilemodules changes files in include/generated/*
>> while do_shared_workdir tries to copy them to shared working directory.
>>
>> Functionality of do_shared_workdir has been moved to separate function
>> mk_shared_workdir and called from do_kernel_compile. do_shared_workdir
>> left in the code as it may be used in many recipes.
>
> Its called from do_kernel_install according to the patch?
>
> This leaves a race since some code depends on the do_shared_work task
> and shared_work is added after compile before install.

And the autobuilder picked up the failure as well. I have a variant
staged here, and
will shake it out now that my other kernel series is out.

Bruce

>
> Cheers,
>
> Richard
>
>> [YOCTO #7321]
>>
>> Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
>> Signed-off-by: Bruce Ashfield <bruce.ashfield at windriver.com>
>> ---
>>  meta/classes/kernel.bbclass | 12 +++++++++++-
>>  1 file changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index 125ed88..aad430a 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -231,6 +231,8 @@ kernel_do_install() {
>>       [ -e Module.symvers ] && install -m 0644 Module.symvers ${D}/boot/Module.symvers-${KERNEL_VERSION}
>>       install -d ${D}${sysconfdir}/modules-load.d
>>       install -d ${D}${sysconfdir}/modprobe.d
>> +
>> +     mk_shared_workdir
>>  }
>>  do_install[prefuncs] += "package_get_auto_pr"
>>
>> @@ -245,7 +247,7 @@ emit_depmod_pkgdata() {
>>
>>  PACKAGEFUNCS += "emit_depmod_pkgdata"
>>
>> -do_shared_workdir () {
>> +mk_shared_workdir () {
>>       cd ${B}
>>
>>       kerneldir=${STAGING_KERNEL_BUILDDIR}
>> @@ -289,6 +291,14 @@ do_shared_workdir () {
>>       fi
>>  }
>>
>> +# NOTE!!! Functionality of do_shared_workdir has been moved to mk_shared_workdir
>> +# and called from kernel_do_compile.
>> +# It caused race condition with do_compile_kernelmodules when it runs
>> +# in parallel with do_compile_kernelmodules
>> +do_shared_workdir () {
>> +     :
>> +}
>> +
>>  # We don't need to stage anything, not the modules/firmware since those would clash with linux-firmware
>>  sysroot_stage_all () {
>>       :
>> --
>> 2.1.4
>>
>
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"



More information about the Openembedded-core mailing list