pcmcia_fixup_iowidth() and pcmcia_enable_device() 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 <baijiaju1...@gmail.com>
---
 drivers/pcmcia/pcmcia_resource.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pcmcia/pcmcia_resource.c b/drivers/pcmcia/pcmcia_resource.c
index 34aad895a239..8129dd8094cd 100644
--- a/drivers/pcmcia/pcmcia_resource.c
+++ b/drivers/pcmcia/pcmcia_resource.c
@@ -284,7 +284,7 @@ int pcmcia_fixup_iowidth(struct pcmcia_device *p_dev)
                io_on.stop = s->io[i].res->end;
 
                s->ops->set_io_map(s, &io_off);
-               mdelay(40);
+               msleep(40);
                s->ops->set_io_map(s, &io_on);
        }
 unlock:
@@ -567,7 +567,7 @@ int pcmcia_enable_device(struct pcmcia_device *p_dev)
                        !(flags & CONF_ENABLE_PULSE_IRQ))
                        option |= COR_LEVEL_REQ;
                pcmcia_write_cis_mem(s, 1, (base + CISREG_COR)>>1, 1, &option);
-               mdelay(40);
+               msleep(40);
        }
        if (p_dev->config_regs & PRESENT_STATUS)
                pcmcia_write_cis_mem(s, 1, (base + CISREG_CCSR)>>1, 1, &status);
-- 
2.17.0

Reply via email to