[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1516938138-27259-1-git-send-email-baijiaju1990@gmail.com>
Date: Fri, 26 Jan 2018 11:42:18 +0800
From: Jia-Ju Bai <baijiaju1990@...il.com>
To: 3chas3@...il.com
Cc: linux-atm-general@...ts.sourceforge.net, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, Jia-Ju Bai <baijiaju1990@...il.com>
Subject: [PATCH] atm: idt77252: Replace mdelay with usleep_range in idt77252_preset
After checking all possible call chains to idt77252_preset() here,
my tool finds that idt77252_preset() is never called in atomic context,
namely never in an interrupt handler or holding a spinlock.
And idt77252_preset() calls deinit_card, which calls free_irq (can sleep),
so it indicates that idt77252_preset() can call functions which can sleep.
Thus mdelay can be replaced with usleep_range to avoid busy wait.
This is found by a static analysis tool named DCNS written by myself.
Signed-off-by: Jia-Ju Bai <baijiaju1990@...il.com>
---
drivers/atm/idt77252.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index 0277f36..cea4bf2 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -3563,7 +3563,7 @@ static int idt77252_preset(struct idt77252_dev *card)
/* Software reset */
writel(SAR_CFG_SWRST, SAR_REG_CFG);
- mdelay(1);
+ usleep_range(500, 1000);
writel(0, SAR_REG_CFG);
IPRINTK("%s: Software resetted.\n", card->name);
--
1.7.9.5
Powered by blists - more mailing lists