Re: [PATCH RFC v2 2/2] USB: ldusb: fix ring-buffer locking

From: Greg Kroah-Hartman
Date: Fri Oct 18 2019 - 14:55:19 EST


On Fri, Oct 18, 2019 at 05:19:55PM +0200, Johan Hovold wrote:
> The custom ring-buffer implementation was merged without any locking
> whatsoever, but a spinlock was later added by commit 9d33efd9a791
> ("USB: ldusb bugfix").
>
> The lock did not cover the loads from the ring-buffer entry after
> determining the buffer was non-empty, nor the update of the tail index
> once the entry had been processed. The former could lead to stale data
> being returned, while the latter could lead to memory corruption on
> sufficiently weakly ordered architectures.

Ugh.

This almost looks sane, but what's the odds there is some other issue in
here as well? Would it make sense to just convert the code to use the
"standard" ring buffer code instead?

thanks,

greg k-h