All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Denis Efremov (Oracle)" <efremov@linux.com>
To: Karl Mehltretter <kmehltretter@gmail.com>, Jens Axboe <axboe@kernel.dk>
Cc: Jiri Kosina <jikos@kernel.org>,
	linux-block@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] floppy: flush pending work before releasing resources on init failure
Date: Fri, 24 Jul 2026 18:02:53 +0400	[thread overview]
Message-ID: <c1270448-e13e-4fc3-a8ce-e0cfa83e8107@linux.com> (raw)
In-Reply-To: <20260722034435.13432-1-kmehltretter@gmail.com>

Hello,

Thank you for the patch.

On 22/07/2026 07:44, Karl Mehltretter wrote:
> do_floppy_init() probes each FDC with user_reset_fdc(), which queues a
> redo_fd_request() work item on floppy_wq that may still be pending when
> the probe finishes. When no controller is found, the error path calls
> floppy_release_irq_and_dma() to free the IRQ and DMA channel, and only
> later destroys the workqueue. destroy_workqueue() drains the queued work
> last, so it can run after the IRQ and DMA are already gone:
> 
>   floppy0: no floppy controllers found
>   work still pending
> 
> The flush used to be here. Commit 070ad7e793dc ("floppy: convert to
> delayed work and single-thread wq") renamed the label out_flush_work to
> out_release_dma and dropped it. Restore it so the work drains before the
> IRQ and DMA are released, as floppy_module_exit() already does.
> 
> Fixes: 070ad7e793dc ("floppy: convert to delayed work and single-thread wq")
> Assisted-by: Claude:claude-opus-4-8
> Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>

Reviewed-by: Denis Efremov (Oracle) <efremov@linux.com>

> ---
> 
> Noticed while running mainline on an emulated Acorn RiscPC, a custom
> personal QEMU machine. It has no floppy controller and rpc_defconfig
> sets CONFIG_BLK_DEV_FD=y, so every boot takes the no-controller error
> path. No disk is registered there, so the drained work takes the
> empty-request fast path and just unlocks the FDC, leaving only the
> spurious message.
> 
> Verified with 100 QEMU boots per platform on v7.2-rc4, no controller
> present. "work still pending" appeared on an unfixed kernel vs with this
> patch:
> 
>   Acorn RiscPC, rpc_defconfig: 100/100 -> 0/100
>   x86_64 defconfig, qemu -M q35: 6/100 -> 0/100
> 
> With a controller present on qemu -M pc, reading and writing a 1.44M
> floppy image still works.
> 
>  drivers/block/floppy.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
> index f04397b8e381..6cfd114d27df 100644
> --- a/drivers/block/floppy.c
> +++ b/drivers/block/floppy.c
> @@ -4744,6 +4744,8 @@ static int __init do_floppy_init(void)
>  		}
>  	}
>  out_release_dma:
> +	/* Drain the queued redo_fd_request() before releasing IRQ and DMA. */
> +	flush_workqueue(floppy_wq);
>  	if (atomic_read(&usage_count))
>  		floppy_release_irq_and_dma();
>  out_unreg_driver:

Thanks,
Denis

  reply	other threads:[~2026-07-24 14:02 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-22  3:44 [PATCH] floppy: flush pending work before releasing resources on init failure Karl Mehltretter
2026-07-24 14:02 ` Denis Efremov (Oracle) [this message]
2026-09-12  9:33 ` Karl Mehltretter
2026-09-12 21:37   ` Denis Efremov (Oracle)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c1270448-e13e-4fc3-a8ce-e0cfa83e8107@linux.com \
    --to=efremov@linux.com \
    --cc=axboe@kernel.dk \
    --cc=jikos@kernel.org \
    --cc=kmehltretter@gmail.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.