On Tue, 15 Dec 2015 15:10:04 -0500
Steven Rostedt <[email protected]> wrote:

> I can write a patch on top of this one that does just that. I'll have
> to run it through all my tests before I push it to you. Expect
> something by tomorrow.

Russell,

Can you apply this on top of your patch and make sure everything still
works. I built and booted it, and now I'm going to run it through my
tests.

Thanks!

-- Steve

diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c
index 91705ef30402..038a11aa0865 100644
--- a/scripts/recordmcount.c
+++ b/scripts/recordmcount.c
@@ -211,20 +211,24 @@ static void *mmap_file(char const *fname)
                addr = umalloc(sb.st_size);
                uread(fd_map, addr, sb.st_size);
        }
-       if (sb.st_nlink != 1) {
-               /* file is hard-linked, break the hard link */
-               close(fd_map);
-               if (unlink(fname) < 0) {
-                       perror(fname);
-                       fail_file();
-               }
-               fd_map = open(fname, O_RDWR | O_CREAT, sb.st_mode);
-               if (fd_map < 0) {
-                       perror(fname);
-                       fail_file();
-               }
-               uwrite(fd_map, addr, sb.st_size);
+
+       /*
+        * After reading the entire file into memory, delete it
+        * and write it back, to prevent weird side effects of modifying
+        * an object file in place.
+        */
+       close(fd_map);
+       if (unlink(fname) < 0) {
+               perror(fname);
+               fail_file();
+       }
+       fd_map = open(fname, O_RDWR | O_CREAT, sb.st_mode);
+       if (fd_map < 0) {
+               perror(fname);
+               fail_file();
        }
+       uwrite(fd_map, addr, sb.st_size);
+
        return addr;
 }
 
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to