On Thu, Sep 5, 2013 at 1:29 PM, Waiman Long <waiman.long@xxxxxx> wrote: > > It is not as simple as doing a strncpy(). Yes it damn well is. Stop the f*cking stupid arguments, and instead listen to what I say. Here. Let me bold-face the most important part for you, so that you don't miss it in all the other crap: MAKE prepend() JUST USE "strncpy()" INSTEAD OF "memcpy()". Nothing else. Seriously. Your "you can't do it because we copy backwards" arguments are pure and utter garbage, exactly BECAUSE YOU DON'T CHANGE ANY OF THAT. You can actually use the unreliable length variable BUT YOU MUST STILL STOP AT A ZERO. Get it? You're complicating the whole thing for no good reason. I'm telling you (and HAVE BEEN telling you multiple times) that you cannot use "memcpy()" because the length may not be reliable, so you need to check for zero in the middle and stop early. All your arguments have been totally pointless, because you don't seem to see that simple and fundamental issue. You don't change ANYTHING else. But you damn well not do a "memcpy", you do something that stops when it hits a NUL character. We call that function "strncpy()". I'd actually prefer to write it out by hand (because somebody could implement "strncpy()" as a questionable function that accesses past the NUL as long as it's within the 'n'), and because I think we might want to do that word-at-a-time version of it, but for a first approximation, just do that one-liner version. Don't do anything else. Don't do locking. Don't do memchr. Just make sure that you stop at a NUL character, and don't trust the length, because the length may not match the pointer. That's was always ALL you needed to do. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html