On Thu, 2013-11-28 at 22:00 +0800, Herbert Xu wrote: > On Tue, Nov 19, 2013 at 11:22:12AM +0100, Harald Freudenberger wrote: > > The aes-ctr mode used one preallocated page without any concurrency > > protection. When multiple threads run aes-ctr encryption or decryption > > this could lead to data corruption. > > > > The patch introduces locking for the preallocated page and alternatively > > allocating and freeing of an temp page in concurrency situations. > > You can't use mutex_lock because you may be in a non-sleepable > context. Perhaps just fall back to doing it block-by-block, like > we do in aesni-intel on x86? The first attempt to lock the mutex is done with mutex_trylock() which should be safe for non-sleepable context. If this fails, an attempt is made to allocate a fresh page __get_free_page(GFP_ATOMIC). If this also fails, well what could be done then ? I think, it is valid to wait for the preallocated page to get released with an mutex_lock(). Should I really add code here for handling the 3rd level of the exceptional path ? > > I have to say that your hardware has a funny way of doing CTR. > Somebody was generalising out of their backside :) > > Thanks, -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html