[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