On Fri, 16 Mar 2018, Masahiro Yamada wrote: > 2018-03-16 5:56 GMT+09:00 Nicolas Pitre <nicolas.pitre@xxxxxxxxxx>: > > ----- >8 > > Subject: [PATCH] kbuild: make scripts/adjust_autoksyms.sh robust against timestamp races > > > > Some filesystems have timestamps with coarse precision that may allow > > for a recently built object file to have the same timestamp as the > > updated time on one of its dependency files. When that happens, the > > object file doesn't get rebuilt as it should. > > > > This is especially the case on filesystems that don't have sub-second > > time precision, such as ext3 or Ext4 with 128B inodes. > > > > Let's prevent that by making sure updated dependency files have a newer > > timestamp than the first file we created (i.e. autoksyms.h.tmpnew). > > > > Reported-by: Thomas Lindroth <thomas.lindroth@xxxxxxxxx> > > Signed-off-by: Nicolas Pitre <nico@xxxxxxxxxx> > > > > diff --git a/scripts/adjust_autoksyms.sh b/scripts/adjust_autoksyms.sh > > index 513da1a4a2..d67830e6e3 100755 > > --- a/scripts/adjust_autoksyms.sh > > +++ b/scripts/adjust_autoksyms.sh > > @@ -84,6 +84,13 @@ while read sympath; do > > depfile="include/config/ksym/${sympath}.h" > > mkdir -p "$(dirname "$depfile")" > > touch "$depfile" > > Just a nit. > > I think this 'touch' is unnecessary. > If $depfile does not exist, the '-nt' is evaluated to false, > so it will be touched inside the while loop anyway. Though it is more efficient with the first touch up front, as the common case requires only 2 stat system calls instead of 4. > > + # Filesystems with coarse time precision may create timestamps > > + # equal to the one from a file that was very recently built and that > > + # needs to be rebuild. Let's guard against that by making sure our > > + # dep files are always newer than the first file we created here. > > + while [ ! "$depfile" -nt "$new_ksyms_file" ]; do > > + touch "$depfile" > > + done > > echo $((count += 1)) > > done | tail -1 ) > > changed=${changed:-0} > > ----- >8 > > > -- > Best Regards > Masahiro Yamada > -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html