diff options
| author | Peter Hurley <peter@hurleysoftware.com> | 2013-06-15 09:36:15 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-07-23 19:47:10 -0400 |
| commit | a7c8d58c79853adeebf0a1ddc9c63e433b4d97f1 (patch) | |
| tree | 328d40837fb13c7856d3aae2be663093fa6278e0 /include/linux | |
| parent | 47aa658a015440906def231f54685c4d5d49dc38 (diff) | |
tty: Fix unsafe vt paste_selection()
Convert the tty_buffer_flush() exclusion mechanism to a
public interface - tty_buffer_lock/unlock_exclusive() - and use
the interface to safely write the paste selection to the line
discipline.
Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/tty.h | 4 | ||||
| -rw-r--r-- | include/linux/tty_flip.h | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/include/linux/tty.h b/include/linux/tty.h index 991575fe3451..7a9a3b0a6b5a 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -67,8 +67,8 @@ static inline char *flag_buf_ptr(struct tty_buffer *b, int ofs) | |||
| 67 | struct tty_bufhead { | 67 | struct tty_bufhead { |
| 68 | struct tty_buffer *head; /* Queue head */ | 68 | struct tty_buffer *head; /* Queue head */ |
| 69 | struct work_struct work; | 69 | struct work_struct work; |
| 70 | struct mutex flush_mutex; | 70 | struct mutex lock; |
| 71 | unsigned int flushpending:1; | 71 | atomic_t priority; |
| 72 | struct tty_buffer sentinel; | 72 | struct tty_buffer sentinel; |
| 73 | struct llist_head free; /* Free queue head */ | 73 | struct llist_head free; /* Free queue head */ |
| 74 | atomic_t memory_used; /* In-use buffers excluding free list */ | 74 | atomic_t memory_used; /* In-use buffers excluding free list */ |
diff --git a/include/linux/tty_flip.h b/include/linux/tty_flip.h index 6944ed2ce692..21ddd7d9ea1f 100644 --- a/include/linux/tty_flip.h +++ b/include/linux/tty_flip.h | |||
| @@ -32,4 +32,7 @@ static inline int tty_insert_flip_string(struct tty_port *port, | |||
| 32 | return tty_insert_flip_string_fixed_flag(port, chars, TTY_NORMAL, size); | 32 | return tty_insert_flip_string_fixed_flag(port, chars, TTY_NORMAL, size); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | extern void tty_buffer_lock_exclusive(struct tty_port *port); | ||
| 36 | extern void tty_buffer_unlock_exclusive(struct tty_port *port); | ||
| 37 | |||
| 35 | #endif /* _LINUX_TTY_FLIP_H */ | 38 | #endif /* _LINUX_TTY_FLIP_H */ |
