On Fri, Feb 14, 2020 at 02:46:51PM -0500, Daniel Jordan wrote: > From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > > [ Upstream commit 07928d9bfc81640bab36f5190e8725894d93b659 ] > > The function padata_flush_queues is fundamentally broken because > it cannot force padata users to complete the request that is > underway. IOW padata has to passively wait for the completion > of any outstanding work. > > As it stands flushing is used in two places. Its use in padata_stop > is simply unnecessary because nothing depends on the queues to > be flushed afterwards. > > The other use in padata_replace is more substantial as we depend > on it to free the old pd structure. This patch instead uses the > pd->refcnt to dynamically free the pd structure once all requests > are complete. > > Fixes: 2b73b07ab8a4 ("padata: Flush the padata queues actively") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Reviewed-by: Daniel Jordan <daniel.m.jordan@xxxxxxxxxx> > Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > [dj: leave "pd->pinst = pinst" assignment in padata_alloc_pd()] > Signed-off-by: Daniel Jordan <daniel.m.jordan@xxxxxxxxxx> Thanks, all 3 backports now queued up. greg k-h