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