lkml.org 
[lkml]   [2014]   [Jan]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH, RFC 13/30] cris: sync_serial: remove interruptible_sleep_on
    Date
    sleep_on and its variants are racy and going away. This replaces
    the two uses in the cris sync_serial drivers with the equivalent
    but race-free wait_event_interruptible.

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Cc: Jesper Nilsson <jesper.nilsson@axis.com>
    Cc: Mikael Starvik <starvik@axis.com>
    Cc: linux-cris-kernel@axis.com
    ---
    arch/cris/arch-v10/drivers/sync_serial.c | 4 +++-
    arch/cris/arch-v32/drivers/sync_serial.c | 4 +++-
    2 files changed, 6 insertions(+), 2 deletions(-)

    diff --git a/arch/cris/arch-v10/drivers/sync_serial.c b/arch/cris/arch-v10/drivers/sync_serial.c
    index a1c498d..485f2bb 100644
    --- a/arch/cris/arch-v10/drivers/sync_serial.c
    +++ b/arch/cris/arch-v10/drivers/sync_serial.c
    @@ -22,6 +22,7 @@
    #include <linux/init.h>
    #include <linux/mutex.h>
    #include <linux/timer.h>
    +#include <linux/wait.h>
    #include <asm/irq.h>
    #include <asm/dma.h>
    #include <asm/io.h>
    @@ -1136,7 +1137,8 @@ static ssize_t sync_serial_read(struct file *file, char *buf,
    if (file->f_flags & O_NONBLOCK)
    return -EAGAIN;

    - interruptible_sleep_on(&port->in_wait_q);
    + wait_event_interruptible(port->in_wait_q,
    + !(start == end && !port->full));
    if (signal_pending(current))
    return -EINTR;

    diff --git a/arch/cris/arch-v32/drivers/sync_serial.c b/arch/cris/arch-v32/drivers/sync_serial.c
    index 219f704..bbb806b 100644
    --- a/arch/cris/arch-v32/drivers/sync_serial.c
    +++ b/arch/cris/arch-v32/drivers/sync_serial.c
    @@ -19,6 +19,7 @@
    #include <linux/init.h>
    #include <linux/timer.h>
    #include <linux/spinlock.h>
    +#include <linux/wait.h>

    #include <asm/io.h>
    #include <dma.h>
    @@ -1144,7 +1145,8 @@ static ssize_t sync_serial_read(struct file * file, char * buf,
    if (file->f_flags & O_NONBLOCK)
    return -EAGAIN;

    - interruptible_sleep_on(&port->in_wait_q);
    + wait_event_interruptible(port->in_wait_q,
    + !(start == end && !port->full));
    if (signal_pending(current))
    return -EINTR;

    --
    1.8.3.2


    \
     
     \ /
      Last update: 2014-01-02 13:41    [W:2.494 / U:0.408 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site