linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] auxdisplay: charlcd: delete mdelay in long_sleep
@ 2018-01-26 15:19 Jia-Ju Bai
  2018-01-29  6:50 ` Willy Tarreau
  0 siblings, 1 reply; 4+ messages in thread
From: Jia-Ju Bai @ 2018-01-26 15:19 UTC (permalink / raw)
  To: miguel.ojeda.sandonis, w; +Cc: linux-kernel, Jia-Ju Bai

The function long_sleep() calls mdelay() when in an interrupt handler.
But only charlcd_clear_display() and charlcd_init_display calls 
long_sleep(), and my tool finds that the two functions 
are never called in an interrupt handler.
Thus mdelay() and in_interrupt() are not necessary.

This is found by a static analysis tool named DCNS written by myself.

Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
---
 drivers/auxdisplay/charlcd.c |    5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/auxdisplay/charlcd.c b/drivers/auxdisplay/charlcd.c
index 642afd8..9e84795 100644
--- a/drivers/auxdisplay/charlcd.c
+++ b/drivers/auxdisplay/charlcd.c
@@ -102,10 +102,7 @@ struct charlcd_priv {
 /* sleeps that many milliseconds with a reschedule */
 static void long_sleep(int ms)
 {
-	if (in_interrupt())
-		mdelay(ms);
-	else
-		schedule_timeout_interruptible(msecs_to_jiffies(ms));
+	schedule_timeout_interruptible(msecs_to_jiffies(ms));
 }
 
 /* turn the backlight on or off */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] auxdisplay: charlcd: delete mdelay in long_sleep
  2018-01-26 15:19 [PATCH] auxdisplay: charlcd: delete mdelay in long_sleep Jia-Ju Bai
@ 2018-01-29  6:50 ` Willy Tarreau
  2018-02-12 12:00   ` Miguel Ojeda
  2018-02-12 13:26   ` Miguel Ojeda
  0 siblings, 2 replies; 4+ messages in thread
From: Willy Tarreau @ 2018-01-29  6:50 UTC (permalink / raw)
  To: Jia-Ju Bai; +Cc: miguel.ojeda.sandonis, linux-kernel

Hi,

On Fri, Jan 26, 2018 at 11:19:15PM +0800, Jia-Ju Bai wrote:
> The function long_sleep() calls mdelay() when in an interrupt handler.
> But only charlcd_clear_display() and charlcd_init_display calls 
> long_sleep(), and my tool finds that the two functions 
> are never called in an interrupt handler.
> Thus mdelay() and in_interrupt() are not necessary.
> 
> This is found by a static analysis tool named DCNS written by myself.

Looks good. This code is extremely old (started in 2.2) so I'm not
surprised at all that after many changes such parts are not used
anymore.

Acked-by: Willy Tarreau <w@1wt.eu>

Willy

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] auxdisplay: charlcd: delete mdelay in long_sleep
  2018-01-29  6:50 ` Willy Tarreau
@ 2018-02-12 12:00   ` Miguel Ojeda
  2018-02-12 13:26   ` Miguel Ojeda
  1 sibling, 0 replies; 4+ messages in thread
From: Miguel Ojeda @ 2018-02-12 12:00 UTC (permalink / raw)
  To: Willy Tarreau; +Cc: Jia-Ju Bai, linux-kernel

On Mon, Jan 29, 2018 at 7:50 AM, Willy Tarreau <w@1wt.eu> wrote:
> Hi,
>
> On Fri, Jan 26, 2018 at 11:19:15PM +0800, Jia-Ju Bai wrote:
>> The function long_sleep() calls mdelay() when in an interrupt handler.
>> But only charlcd_clear_display() and charlcd_init_display calls
>> long_sleep(), and my tool finds that the two functions
>> are never called in an interrupt handler.
>> Thus mdelay() and in_interrupt() are not necessary.
>>
>> This is found by a static analysis tool named DCNS written by myself.
>
> Looks good. This code is extremely old (started in 2.2) so I'm not
> surprised at all that after many changes such parts are not used
> anymore.
>
> Acked-by: Willy Tarreau <w@1wt.eu>

Thanks for the patch and the ack, putting it in the queue.

Miguel

>
> Willy

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] auxdisplay: charlcd: delete mdelay in long_sleep
  2018-01-29  6:50 ` Willy Tarreau
  2018-02-12 12:00   ` Miguel Ojeda
@ 2018-02-12 13:26   ` Miguel Ojeda
  1 sibling, 0 replies; 4+ messages in thread
From: Miguel Ojeda @ 2018-02-12 13:26 UTC (permalink / raw)
  To: Willy Tarreau; +Cc: Jia-Ju Bai, linux-kernel

On Mon, Jan 29, 2018 at 7:50 AM, Willy Tarreau <w@1wt.eu> wrote:
> Hi,
>
> On Fri, Jan 26, 2018 at 11:19:15PM +0800, Jia-Ju Bai wrote:
>> The function long_sleep() calls mdelay() when in an interrupt handler.
>> But only charlcd_clear_display() and charlcd_init_display calls
>> long_sleep(), and my tool finds that the two functions
>> are never called in an interrupt handler.
>> Thus mdelay() and in_interrupt() are not necessary.
>>
>> This is found by a static analysis tool named DCNS written by myself.
>
> Looks good. This code is extremely old (started in 2.2) so I'm not
> surprised at all that after many changes such parts are not used
> anymore.

By the way, maybe msleep_interruptible() should be used instead?
(since I guess you want a minimum time here, no?). It would also take
care of the jiffies to ms conversion, so the whole long_jump could be
removed.

>
> Acked-by: Willy Tarreau <w@1wt.eu>
>
> Willy

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-02-12 13:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-26 15:19 [PATCH] auxdisplay: charlcd: delete mdelay in long_sleep Jia-Ju Bai
2018-01-29  6:50 ` Willy Tarreau
2018-02-12 12:00   ` Miguel Ojeda
2018-02-12 13:26   ` Miguel Ojeda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).