On Mon, Aug 28, 2023 at 06:59:12PM +0000, Joel Fernandes wrote: > On Sun, Aug 27, 2023 at 11:15:20AM +0100, Lorenzo Stoakes wrote: > > On Sun, Aug 27, 2023 at 10:57:59AM +0100, Lorenzo Stoakes wrote: > > [snip] > > > > > > +/* > > > > + * Verify that an mremap within a range does not cause corruption > > > > + * of unrelated part of range. > > > > + * > > > > + * Consider the following range which is 2MB aligned and is > > > > + * a part of a larger 10MB range which is not shown. Each > > > > + * character is 256KB below making the source and destination > > > > Just noticed, I think you misspeak here, as this test doens't seem to > > offset by 256 KiB? That is the strategy for mremap_move_1mb_from_start() > > rather than this test so perhaps comment needs to be moved around? > > > > * 2MB each. The lower case letters are moved (s to d) and the > > * upper case letters are not moved. The below test verifies > > * that the upper case S letters are not corrupted by the > > * adjacent mremap. > > * > > * |DDDDddddSSSSssss| > > */ > > static void mremap_move_within_range(char pattern_seed) > > Here we are moving 1MB within a 4MB zone of a large mapping. Each character > 's' or 'd' is 256KB. The 256KB there is just for illustration and not really > significant as such. The 'ssss' is moved to 'dddd' 1MB each. Here we make Ahhh I see. I find that a little confusing here, perhaps clearer to say 'each block of letters is 1 MiB in size' or something? > sure that this move did not accidentally corrupt 'SSSS' and 'DDDD' due to > alignment optimization. Basically to protect from this, we check in the code > that the source address is beginning of the VMA: > + if (vma->vm_start != addr_to_align) > + return false; > > But you did point an issue which is I need to change the comment from 'larger > 10MB' to 'larger 20MB'. Did I? Well happy to take credit ;) > > In the mremap_move_1mb_from_start() test, I request for an alignment of > 1.25MB so that when I align down, I fall no mapping. This is to catch a bug > that Linus found which is that just because an aligned down address did not > fall on a mapping, that doesn't mean we can just move it at PMD-level > otherwise we destroy the mapping. Yeah that case it all makes sense in, just wondered if the comment belonged there but just me not reading your comment carefully! > > I do need to update the test name in mremap_move_1mb_from_start() to: "mremap > move 1mb from start at 1MB+256KB aligned src". So thanks for point this! > > Would that sort it out or is there still something in the comment I am > missing? Just the suggestion above re: clarification, however it's not a show stopper more of a small nit. > > Thanks! > > - Joel Cheers! > > > > > > > > > > [snip]