[dm-devel] [PATCH v5.10] dm: fix mempool NULL pointer race when completing IO

Mikulas Patocka mpatocka at redhat.com
Thu Apr 28 16:22:26 UTC 2022



On Tue, 26 Apr 2022, Greg Kroah-Hartman wrote:

> On Thu, Apr 21, 2022 at 02:08:30PM -0400, Mikulas Patocka wrote:
> > Hi
> 
> Not really needed in a changelog text :)
> 
> > This is backport of patches d208b89401e0 ("dm: fix mempool NULL pointer
> > race when completing IO") and 9f6dc6337610 ("dm: interlock pending dm_io
> > and dm_wait_for_bios_completion") for the kernel 5.10.
> 
> Can you just make these 2 different patches?
> 
> > 
> > The bugs fixed by these patches can cause random crashing when reloading
> > dm table, so it is eligible for stable backport.
> > 
> > This patch is different from the upstream patches because the code
> > diverged significantly.
> > 
> 
> This change is _VERY_ different.  I would need acks from the maintainers
> of this code before I could accept this, along with a much more detailed
> description of why the original commits will not work here as well.
> 
> Same for the other backports.

Regarding backporting of 9f6dc633:

My reasoning was that introducing "md->pending_io" in the backported 
stable kernels is useless - it will just degrade performance by consuming 
one more cache line per I/O without providing any gain.

In the upstream kernels, Mike needs that "md->pending_io" variable for 
other reasons (the I/O accounting was reworked there in order to avoid 
some spikes with dm-crypt), but there is no need for it in the stable 
kernels.

In order to fix that race condition, all we need to do is to make sure 
that dm_stats_account_io is called before bio_end_io_acct - and the patch 
does that - it swaps them.

Do you still insist that this useless percpu variable must be added to the 
stable kernels? If you do, I can make it, but I think it's better to just 
swap those two functions.

Mikulas


More information about the dm-devel mailing list