diff mbox

[v2,1/2] fuzz/x86emul: avoid race in link farm rune

Message ID 20170217102711.14525-2-wei.liu2@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Wei Liu Feb. 17, 2017, 10:27 a.m. UTC
Several `ln -sf` can race with each other and cause error like:

14:43:56 00:07:06 O: ln: cannot remove 'asm': No such file or directory

Provide dedicated targets for soft-linking directories.

Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
 tools/fuzz/x86_instruction_emulator/Makefile | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

Comments

Jan Beulich Feb. 17, 2017, 10:46 a.m. UTC | #1
>>> On 17.02.17 at 11:27, <wei.liu2@citrix.com> wrote:
> --- a/tools/fuzz/x86_instruction_emulator/Makefile
> +++ b/tools/fuzz/x86_instruction_emulator/Makefile
> @@ -8,19 +8,20 @@ else
>  x86-instruction-emulator-fuzzer-all:
>  endif
>  
> -x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h:
> -	[ -L x86_emulate ] || ln -sf $(XEN_ROOT)/xen/arch/x86/x86_emulate .
> +x86_emulate:
> +	[ -L $@ ] || ln -sf $(XEN_ROOT)/xen/arch/x86/$@ .
>  
> -asm/x86-vendors.h asm/x86-defns.h asm/msr-index.h:
> -	[ -L asm ] || ln -sf $(XEN_ROOT)/xen/include/asm-x86 asm
> +x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h: x86_emulate
> +
> +asm:
> +	[ -L $@ ] || ln -sf $(XEN_ROOT)/xen/include/asm-x86 $@
>  
>  x86_emulate.c x86_emulate.h: %:
>  	[ -L $* ] || ln -sf $(XEN_ROOT)/tools/tests/x86_emulator/$*
>  
>  CFLAGS += $(CFLAGS_xeninclude) -D__XEN_TOOLS__ -I.
>  
> -x86.h := asm/x86-vendors.h asm/x86-defns.h asm/msr-index.h
> -x86_emulate.h := x86_emulate.h x86_emulate/x86_emulate.h $(x86.h)
> +x86_emulate.h := x86_emulate.h x86_emulate/x86_emulate.h asm
>  
>  x86_emulate.o: x86_emulate.c x86_emulate/x86_emulate.c $(x86_emulate.h)

This now breaks the need for re-compilation of x86_emulate.o
when any of the headers in $(x86.h) changed.

Jan
Wei Liu Feb. 17, 2017, 11:14 a.m. UTC | #2
On Fri, Feb 17, 2017 at 03:46:39AM -0700, Jan Beulich wrote:
> >>> On 17.02.17 at 11:27, <wei.liu2@citrix.com> wrote:
> > --- a/tools/fuzz/x86_instruction_emulator/Makefile
> > +++ b/tools/fuzz/x86_instruction_emulator/Makefile
> > @@ -8,19 +8,20 @@ else
> >  x86-instruction-emulator-fuzzer-all:
> >  endif
> >  
> > -x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h:
> > -	[ -L x86_emulate ] || ln -sf $(XEN_ROOT)/xen/arch/x86/x86_emulate .
> > +x86_emulate:
> > +	[ -L $@ ] || ln -sf $(XEN_ROOT)/xen/arch/x86/$@ .
> >  
> > -asm/x86-vendors.h asm/x86-defns.h asm/msr-index.h:
> > -	[ -L asm ] || ln -sf $(XEN_ROOT)/xen/include/asm-x86 asm
> > +x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h: x86_emulate
> > +
> > +asm:
> > +	[ -L $@ ] || ln -sf $(XEN_ROOT)/xen/include/asm-x86 $@
> >  
> >  x86_emulate.c x86_emulate.h: %:
> >  	[ -L $* ] || ln -sf $(XEN_ROOT)/tools/tests/x86_emulator/$*
> >  
> >  CFLAGS += $(CFLAGS_xeninclude) -D__XEN_TOOLS__ -I.
> >  
> > -x86.h := asm/x86-vendors.h asm/x86-defns.h asm/msr-index.h
> > -x86_emulate.h := x86_emulate.h x86_emulate/x86_emulate.h $(x86.h)
> > +x86_emulate.h := x86_emulate.h x86_emulate/x86_emulate.h asm
> >  
> >  x86_emulate.o: x86_emulate.c x86_emulate/x86_emulate.c $(x86_emulate.h)
> 
> This now breaks the need for re-compilation of x86_emulate.o
> when any of the headers in $(x86.h) changed.
> 

Yes, you're right. I will fix this.

> Jan
>
diff mbox

Patch

diff --git a/tools/fuzz/x86_instruction_emulator/Makefile b/tools/fuzz/x86_instruction_emulator/Makefile
index fede7e9afd..ac9010e4a8 100644
--- a/tools/fuzz/x86_instruction_emulator/Makefile
+++ b/tools/fuzz/x86_instruction_emulator/Makefile
@@ -8,19 +8,20 @@  else
 x86-instruction-emulator-fuzzer-all:
 endif
 
-x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h:
-	[ -L x86_emulate ] || ln -sf $(XEN_ROOT)/xen/arch/x86/x86_emulate .
+x86_emulate:
+	[ -L $@ ] || ln -sf $(XEN_ROOT)/xen/arch/x86/$@ .
 
-asm/x86-vendors.h asm/x86-defns.h asm/msr-index.h:
-	[ -L asm ] || ln -sf $(XEN_ROOT)/xen/include/asm-x86 asm
+x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h: x86_emulate
+
+asm:
+	[ -L $@ ] || ln -sf $(XEN_ROOT)/xen/include/asm-x86 $@
 
 x86_emulate.c x86_emulate.h: %:
 	[ -L $* ] || ln -sf $(XEN_ROOT)/tools/tests/x86_emulator/$*
 
 CFLAGS += $(CFLAGS_xeninclude) -D__XEN_TOOLS__ -I.
 
-x86.h := asm/x86-vendors.h asm/x86-defns.h asm/msr-index.h
-x86_emulate.h := x86_emulate.h x86_emulate/x86_emulate.h $(x86.h)
+x86_emulate.h := x86_emulate.h x86_emulate/x86_emulate.h asm
 
 x86_emulate.o: x86_emulate.c x86_emulate/x86_emulate.c $(x86_emulate.h)