Messages in this thread | | | From | David Laight <> | Subject | RE: objtool warning "uses BP as a scratch register" with clang-9 | Date | Fri, 30 Aug 2019 15:55:47 +0000 |
| |
From: Linus Torvalds > Sent: 30 August 2019 16:49 > On Fri, Aug 30, 2019 at 8:02 AM Josh Poimboeuf <jpoimboe@redhat.com> wrote: > > > > For KASAN, the Clang threshold for inserting memset() is *2* consecutive > > writes instead of 17. Isn't that likely to cause tearing-related > > surprises? > > Tearing isn't likely to be a problem. > > It's not like memcpy() does byte-by-byte copies. If you pass it a > word-aligned pointer, it will do word-aligned accesses simply for > performance reasons. > > Even on x86, where we use "rep movsb", we (a) tend to disable it for > small copies and (b) it turns out that microcode that does the > optimized movsb (which is the only case we use it) probably ends up > doing atomic things anyway. Note the "probably". I don't have > microcode source code, but there are other indications like "we know > it doesn't take interrupts on a byte-per-byte level, only on the > cacheline level". > > So it's probably not an issue from a tearing standpoint - but it > worries me because of "this has to be a leaf function" kind of issues > where we may be using individual stores on purpose. We do have things > like that.
Even in userspace you might be accessing mmap()ed PCIe device memory. The last thing you want is the compiler converting anything into 'rep movsb'.
David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
| |