wait_chip_ready() and wait_firmware_ready() are never called in atomic context. They call mdelay() to busily wait, which is not necessary. mdelay() can be replaced with msleep(). This is found by a static analysis tool named DCNS written by myself. Signed-off-by: Jia-Ju Bai <baijiaju1990@xxxxxxxxx> --- drivers/scsi/a100u2w.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/a100u2w.c b/drivers/scsi/a100u2w.c index 8086bd0ac9fd..358dfeb1a9c2 100644 --- a/drivers/scsi/a100u2w.c +++ b/drivers/scsi/a100u2w.c @@ -143,7 +143,7 @@ static u8 wait_chip_ready(struct orc_host * host) for (i = 0; i < 10; i++) { /* Wait 1 second for report timeout */ if (inb(host->base + ORC_HCTRL) & HOSTSTOP) /* Wait HOSTSTOP set */ return 1; - mdelay(100); + msleep(100); } return 0; } @@ -155,7 +155,7 @@ static u8 wait_firmware_ready(struct orc_host * host) for (i = 0; i < 10; i++) { /* Wait 1 second for report timeout */ if (inb(host->base + ORC_HSTUS) & RREADY) /* Wait READY set */ return 1; - mdelay(100); /* wait 100ms before try again */ + msleep(100); /* wait 100ms before try again */ } return 0; } -- 2.17.0