Messages in this thread | | | Date | Mon, 13 Feb 2006 17:45:00 -0600 | From | Paul Fulghum <> | Subject | Re: [PATCH] tty reference count fix |
| |
Jason Baron wrote: > patch looks good to me. Or you could even drop the tty_sem completely from > the release_dev path (patch below) since lock_kernel() is held in both > tty_open() and the release_dev paths()
The historical posts on locking in release_dev() I looked at suggest that a move from BKL to more fine grained synchronization (tty_sem) was a goal.
The code looks like it originally relied on the BKL. The later addition of tty_sem was done in a way that allowed sleeping between setting tty_closing and TTY_CLOSING flag:
down(&tty_sem) if (tty->count == 1) tty_closing = 1; up(&tty_sem) ... down(&tty_sem) <<<< can sleep, open can increase count tty->count-- up(&tty_sem) ... if (tty_closing) set_bit(TTY_CLOSING)
> (and there is no sleeping b/w setting the tty_closing > flag and setting the TTY_CLOSING bit).
Your patch leaves the schedule() call at the bottom of the while loop between setting tty_closing and setting TTY_CLOSING flag.
Thanks, Paul
-- Paul Fulghum Microgate Systems, Ltd
- 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/
| |