Hello, On 09/10/2024 18:37, David Laight wrote: >> Commit 9bf4e919ccad worked around an issue introduced after an innocuous >> optimisation change in LLVM main: >> >>> len is defined as an 'int' because it is assigned from >>> '__user int *optlen'. However, it is clamped against the result of >>> sizeof(), which has a type of 'size_t' ('unsigned long' for 64-bit >>> platforms). This is done with min_t() because min() requires compatible >>> types, which results in both len and the result of sizeof() being casted >>> to 'unsigned int', meaning len changes signs and the result of sizeof() >>> is truncated. From there, len is passed to copy_to_user(), which has a >>> third parameter type of 'unsigned long', so it is widened and changes >>> signs again. > That can't matter because the value is a small positive integer. I agree that it shouldn’t, but it does in the currently released Clang version until the bug is fixed. -- Cheers, Andrej