Re: [PATCH v3 0/4] floppy: suppress UBSAN warning in setup_rw_floppy()

Denis Efremov
2020-05-01T18:22:10Z

On 5/1/20 9:02 PM, Joe Perches wrote:
> On Fri, 2020-05-01 at 16:44 +0300, Denis Efremov wrote:
>> These patches are based on Willy's cleanup patches
>> https://lkml.org/lkml/2020/3/31/609.
>
> Maybe add pr_fmt and clean up a few messages so
> all the logging output is prefixed too.
>

Yes, I'm preparing next patchset with almost the same pr_fmt patch in it.
However, simply adding pr_fmt is not enough. We need to remove DPRINT macro
from the driver because it uses current_drive and this is wrong after Willy's cleanups.

#define DPRINT(format, args...) \
pr_info("floppy%d: " format, current_drive, ##args)

I also don't like debug_dcl and how it is used.

> ---
> drivers/block/floppy.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
> index c3daa64..b26bb1 100644
> --- a/drivers/block/floppy.c
> +++ b/drivers/block/floppy.c
> @@ -145,6 +145,8 @@
> * Better audit of register_blkdev.
> */
>
> +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
> +
> #undef FLOPPY_SILENT_DCL_CLEAR
>
> #define REALLY_SLOW_IO
> @@ -1724,7 +1726,7 @@ irqreturn_t floppy_interrupt(int irq, void *dev_id)
> if (current_fdc >= N_FDC || fdc_state[current_fdc].address == -1) {
> /* we don't even know which FDC is the culprit */
> pr_info("DOR0=%x\n", fdc_state[0].dor);
> - pr_info("floppy interrupt on bizarre fdc %d\n", current_fdc);
> + pr_info("interrupt on bizarre fdc %d\n", current_fdc);
> pr_info("handler=%ps\n", handler);
> is_alive(__func__, "bizarre fdc");
> return IRQ_NONE;
> @@ -2276,7 +2278,7 @@ static void request_done(int uptodate)
> reschedule_timeout(MAXTIMEOUT, msg);
>
> if (!req) {
> - pr_info("floppy.c: no request in request_done\n");
> + pr_info("no request in request_done\n");
> return;
> }
>
> @@ -4181,8 +4183,7 @@ static void floppy_rb0_cb(struct bio *bio)
> int drive = cbdata->drive;
>
> if (bio->bi_status) {
> - pr_info("floppy: error %d while reading block 0\n",
> - bio->bi_status);
> + pr_info("error %d while reading block 0\n", bio->bi_status);
> set_bit(FD_OPEN_SHOULD_FAIL_BIT, &drive_state[drive].flags);
> }
> complete(&cbdata->complete);
> @@ -4954,7 +4955,7 @@ static void floppy_release_irq_and_dma(void)
> #endif
>
> if (delayed_work_pending(&fd_timeout))
> - pr_info("floppy timer still active:%s\n", timeout_message);
> + pr_info("timer still active:%s\n", timeout_message);
> if (delayed_work_pending(&fd_timer))
> pr_info("auxiliary floppy timer still active\n");
> if (work_pending(&floppy_work))
>
>