]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Mar 2018 07:52:03 +0000 (08:52 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Mar 2018 07:52:03 +0000 (08:52 +0100)
added patches:
scripts-recordmcount-break-hardlinks.patch

queue-3.18/scripts-recordmcount-break-hardlinks.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/scripts-recordmcount-break-hardlinks.patch b/queue-3.18/scripts-recordmcount-break-hardlinks.patch
new file mode 100644 (file)
index 0000000..57f6c61
--- /dev/null
@@ -0,0 +1,48 @@
+From dd39a26538e37f6c6131e829a4a510787e43c783 Mon Sep 17 00:00:00 2001
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+Date: Fri, 11 Dec 2015 12:09:03 +0000
+Subject: scripts: recordmcount: break hardlinks
+
+From: Russell King <rmk+kernel@arm.linux.org.uk>
+
+commit dd39a26538e37f6c6131e829a4a510787e43c783 upstream.
+
+recordmcount edits the file in-place, which can cause problems when
+using ccache in hardlink mode.  Arrange for recordmcount to break a
+hardlinked object.
+
+Link: http://lkml.kernel.org/r/E1a7MVT-0000et-62@rmk-PC.arm.linux.org.uk
+
+Cc: stable@vger.kernel.org # 2.6.37+
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ scripts/recordmcount.c |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/scripts/recordmcount.c
++++ b/scripts/recordmcount.c
+@@ -201,6 +201,20 @@ 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);
++      }
+       return addr;
+ }
index b4b0c8c477f27038c30c5d34a1423dae0c08aadd..f1251ed070cfada29262ed93b07db44b095c93c1 100644 (file)
@@ -11,3 +11,4 @@ netfilter-ebtables-config_compat-don-t-trust-userland-offsets.patch
 netfilter-bridge-ebt_among-add-missing-match-size-checks.patch
 netfilter-ipv6-fix-use-after-free-write-in-nf_nat_ipv6_manip_pkt.patch
 ubi-fix-race-condition-between-ubi-volume-creation-and-udev.patch
+scripts-recordmcount-break-hardlinks.patch