lkml.org 
[lkml]   [2007]   [Nov]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[RFC 9/13] Char: nozomi, lock cleanup
    From
    Date
    nozomi, lock cleanup

    - semaphore is deprecated, use mutex instead
    - don't return -ERESTARTSYS when signal might not be pending since it's not
    permitted (unknown retval mioght reach userspace)
    - don't lock interruptible in close or the card might not be stopped on last
    close

    Signed-off-by: Jiri Slaby <jirislaby@gmail.com>

    ---
    commit 19a0196a97ed70efdc421b359e28684e058d7121
    tree 1c65691920ac6efddc7d9e221ee302a0b32b2831
    parent d0b01ce89a7b18ba37ea6192eea6a98cdc01d62e
    author Jiri Slaby <jirislaby@gmail.com> Mon, 05 Nov 2007 13:53:39 +0100
    committer Jiri Slaby <jirislaby@gmail.com> Sat, 10 Nov 2007 00:13:46 +0100

    drivers/char/nozomi.c | 25 ++++++++++++-------------
    1 files changed, 12 insertions(+), 13 deletions(-)

    diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c
    index 4a3ab38..2c4d388 100644
    --- a/drivers/char/nozomi.c
    +++ b/drivers/char/nozomi.c
    @@ -406,7 +406,7 @@ struct port {

    struct tty_struct *tty;
    int tty_open_count;
    - struct semaphore tty_sem;
    + struct mutex tty_sem;
    wait_queue_head_t tty_wait;
    struct async_icount tty_icount;
    };
    @@ -1560,7 +1560,7 @@ static int __devinit nozomi_card_init(struct pci_dev *pdev,
    dc->index_start = ndev_idx * NOZOMI_MAX_PORTS;
    ndevs[ndev_idx] = dc;
    for (i = 0; i < NOZOMI_MAX_PORTS; i++) {
    - init_MUTEX(&dc->port[i].tty_sem);
    + mutex_init(&dc->port[i].tty_sem);
    dc->port[i].tty_open_count = 0;
    dc->port[i].tty = NULL;
    tty_register_device(ntty_driver, dc->index_start + i,
    @@ -1687,7 +1687,7 @@ static int ntty_open(struct tty_struct *tty, struct file *file)
    if (!port || !dc)
    return -ENODEV;

    - if (down_interruptible(&port->tty_sem))
    + if (mutex_lock_interruptible(&port->tty_sem))
    return -ERESTARTSYS;

    port->tty_open_count++;
    @@ -1706,7 +1706,7 @@ static int ntty_open(struct tty_struct *tty, struct file *file)
    spin_unlock_irqrestore(&dc->spin_mutex, flags);
    }

    - up(&port->tty_sem);
    + mutex_unlock(&port->tty_sem);

    return 0;
    }
    @@ -1721,8 +1721,7 @@ static void ntty_close(struct tty_struct *tty, struct file *file)
    if (!dc || !port)
    return;

    - if (down_interruptible(&port->tty_sem))
    - return;
    + mutex_lock(&port->tty_sem);

    if (!port->tty_open_count)
    goto exit;
    @@ -1739,7 +1738,7 @@ static void ntty_close(struct tty_struct *tty, struct file *file)
    }

    exit:
    - up(&port->tty_sem);
    + mutex_unlock(&port->tty_sem);
    }

    /*
    @@ -1759,14 +1758,14 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer,
    if (!dc || !port)
    return -ENODEV;

    - if (unlikely(down_trylock(&port->tty_sem))) {
    + if (unlikely(mutex_trylock(&port->tty_sem))) {
    /*
    * must test lock as tty layer wraps calls
    * to this function with BKL
    */
    dev_err(&dc->pdev->dev, "Would have deadlocked - "
    - "return ERESTARTSYS\n");
    - return -ERESTARTSYS;
    + "return EAGAIN\n");
    + return -EAGAIN;
    }

    if (unlikely(!port->tty_open_count)) {
    @@ -1798,7 +1797,7 @@ static int ntty_write(struct tty_struct *tty, const unsigned char *buffer,
    spin_unlock_irqrestore(&dc->spin_mutex, flags);

    exit:
    - up(&port->tty_sem);
    + mutex_unlock(&port->tty_sem);
    return rval;
    }

    @@ -1816,7 +1815,7 @@ static int ntty_write_room(struct tty_struct *tty)

    if (!dc || !port)
    return 0;
    - if (down_trylock(&port->tty_sem))
    + if (mutex_trylock(&port->tty_sem))
    return 0;

    if (!port->tty_open_count)
    @@ -1825,7 +1824,7 @@ static int ntty_write_room(struct tty_struct *tty)
    room = port->fifo_ul->size - __kfifo_len(port->fifo_ul);

    exit:
    - up(&port->tty_sem);
    + mutex_unlock(&port->tty_sem);
    return room;
    }

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-11-10 00:51    [W:0.050 / U:1.452 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site