Thread (23 messages) 23 messages, 3 authors, 2013-06-17

Re: [PATCH 6/7] n_tty: Fix unsafe update of available buffer space

From: Ilya Zykov <hidden>
Date: 2013-03-19 20:35:48
Also in: lkml

On 19.03.2013 18:26, Peter Hurley wrote:
receive_room is used to control the amount of data the flip
buffer work can push to the read buffer. This update is unsafe:

  CPU 0                        |  CPU 1
                               |
                               | n_tty_read()
                               |   n_tty_set_room()
                               |     left = <calc of space>
n_tty_receive_buf()            |
  <push data to buffer>        |
  n_tty_set_room()             |
    left = <calc of space>     |
    tty->receive_room = left   |
                               |     tty->receive_room = left

receive_room is now updated with a stale calculation of the
available buffer space, and the subsequent work loop will likely
overwrite unread data in the input buffer.
Sounds reasonable to me.
Thank you.
Ilya Zykov [off-list ref]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help