markers: fix duplicate modpost entry
Mathieu Desnoyers [Mon, 21 Jul 2008 21:21:38 +0000 (14:21 -0700)]
When a kernel was rebuilt, the previous Module.markers was not cleared.
It caused markers with different format strings to appear as duplicates
when a markers was changed.  This problem is present since
scripts/mod/modpost.c started to generate Module.markers, commit
b2e3e658b344c6bcfb8fb694100ab2f2b5b2edb0

It therefore applies to 2.6.25, 2.6.26 and linux-next.

I merely merged the patches from Roland, Wenji and Takashi here.

Credits to
Roland McGrath <roland@redhat.com>
Wenji Huang <wenji.huang@oracle.com>
and
Takashi Nishiie <t-nishiie@np.css.fujitsu.com>

for providing the individual fixes.

- Changelog :
  - Integrated Takashi's Makefile modification to clear Module.markers upon
    make clean.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Roland McGrath <roland@redhat.com>
Cc: Wenji Huang <wenji.huang@oracle.com>
Cc: Takashi Nishiie <t-nishiie@np.css.fujitsu.com>
Cc: <stable@kernel.org> [2.6.25.x, 2.6.26.x]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Makefile
scripts/Makefile.modpost
scripts/mod/modpost.c

index 6192922..4bcd1cf 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1148,7 +1148,8 @@ clean: archclean $(clean-dirs)
        @find . $(RCS_FIND_IGNORE) \
                \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \
                -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
-               -o -name '*.symtypes' -o -name 'modules.order' \) \
+               -o -name '*.symtypes' -o -name 'modules.order' \
+               -o -name 'Module.markers' \) \
                -type f -print | xargs rm -f
 
 # mrproper - Delete all generated files, including .config
index 17092d6..9ee9783 100644 (file)
@@ -101,6 +101,7 @@ quiet_cmd_kernel-mod = MODPOST $@
       cmd_kernel-mod = $(modpost) $@
 
 vmlinux.o: FORCE
+       @rm -fr $(kernelmarkersfile)
        $(call cmd,kernel-mod)
 
 # Declare generated files as targets for modpost
index a07f91a..8f038e6 100644 (file)
@@ -1992,7 +1992,8 @@ static void read_markers(const char *fname)
                        mod->skip = 1;
                }
 
-               add_marker(mod, marker, fmt);
+               if (!mod->skip)
+                       add_marker(mod, marker, fmt);
        }
        return;
 fail: