lkml.org 
[lkml]   [2015]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: 4.0.0-rc4: panic in free_block
    From
    From: Linus Torvalds <torvalds@linux-foundation.org>
    Date: Mon, 23 Mar 2015 10:00:02 -0700

    > Maybe the code could be something like
    >
    > void *memmove(void *dst, const void *src, size_t n);
    > {
    > // non-overlapping cases
    > if (src + n <= dst)
    > return memcpy(dst, src, n);
    > if (dst + n <= src)
    > return memcpy(dst, src, n);
    >
    > // overlapping, but we know we
    > // (a) copy upwards
    > // (b) initialize the result in at most chunks of 64
    > if (dst+64 <= src)
    > return memcpy(dst, src, n);
    >
    > .. do the backwards thing ..
    > }
    >
    > (ok, maybe I got it wrong, but you get the idea).
    >
    > I *think* gcc should do ok on the above kind of code, and not generate
    > wildly different code from your handcoded version.

    Sure you could do that in C, but I really want to avoid using memcpy()
    if dst and src overlap in any way at all.

    Said another way, I don't want to codify that "64" thing. The next
    chip could do 128 byte initializing stores.


    \
     
     \ /
      Last update: 2015-03-23 20:21    [W:6.202 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site