"It places page cache pages in a writable scatterlist, separated from the legitimate write region by nothing more than an offset boundary. The design assumes every AEAD algorithm will confine its writes to the intended destination, but nothing in the API enforces this, and nothing documents it as a requirement.
Unfortunately, one AEAD algorithm breaks this silent invariant."
"No other standard AEAD algorithm in the kernel [uses memory that doesn't belong to it as a scratch pad]. GCM, CCM, and regular authenc all confine their writes to the legitimate output area. authencesn alone writes past the boundary."
I'm actually amazed that there's only one bug here. Somehow almost everyone just managed to do the right thing, despite no mechanism enforcing it and no documentation describing it. That's just amazing. It's a testament to the skill of those developers, despite an incredibly bad design.
#copyfail