lkml.org 
[lkml]   [2016]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 100/128] scripts: recordmcount: break hardlinks
    Date
    3.16.7-ckt23 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    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

    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    scripts/recordmcount.c | 14 ++++++++++++++
    1 file changed, 14 insertions(+)

    diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c
    index 650ecc83d7d7..26f0cd2c8e9a 100644
    --- a/scripts/recordmcount.c
    +++ b/scripts/recordmcount.c
    @@ -194,6 +194,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;
    }

    \
     
     \ /
      Last update: 2016-01-25 00:01    [W:3.828 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site