On Sun, Oct 06, 2019 at 06:17:02PM -0700, Linus Torvalds wrote: > On Sun, Oct 6, 2019 at 5:04 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > > > > All my alpha, sparc64, and xtensa tests pass with the attached patch > > applied on top of v5.4-rc2. I didn't test any others. > > Okay... I really wish my guess had been wrong. > > Because fixing filldir64 isn't the problem. I can come up with > multiple ways to avoid the unaligned issues if that was the problem. > > But it does look to me like the fundamental problem is that unaligned > __put_user() calls might just be broken on alpha (and likely sparc > too). Because that looks to be the only difference between the > __copy_to_user() approach and using unsafe_put_user() in a loop. > > Now, I should have handled unaligned things differently in the first > place, and in that sense I think commit 9f79b78ef744 ("Convert > filldir[64]() from __put_user() to unsafe_put_user()") really is > non-optimal on architectures with alignment issues. > > And I'll fix it. Ugh... I wonder if it would be better to lift STAC/CLAC out of raw_copy_to_user(), rather than trying to reinvent its guts in readdir.c...