lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1185551413.3285.13.camel@x2.microgate.com>
Date:	Fri, 27 Jul 2007 10:50:13 -0500
From:	Paul Fulghum <paulkf@...rogate.com>
To:	craigeger@...cast.net
Cc:	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Fwd: PROBLEM: serial port receive buffers not being flushed
	properly

From: craigeger@...cast.net
> [1.] PROBLEM: serial port receive buffers not being flushed properly
> [2.] After calling tcflush() or ioctl() with the TCFLSH argument,
> an ioctl() with the FIONREAD argument reports 0 bytes available
> for reading. However, a subsequent select() and read() of the port
> returns data. This problem is seen in 2.6.21.1 and 2.6.20,
> but is not seen in version 2.6.17.14. Other versions have
> not been tested.

There is receive buffering between the serial driver and
line discipline. The line discipline processes FIONREAD
and TCFLSH with regard to the line discipline receive
buffers but not the intermediate buffering.

In 2.6.17 the intermediate buffering pushed
receive data to the line discipline without
regard for tty->receive_room, so if the ldisc buffers
were full the data was lost.

In 2.6.18 the intermediate buffering was changed to
hold receive data until the line discipline could
accept it.

So in 2.6.17 all the extra data you sent was simply
discarded and flushing the ldisc buffers cleared all
of the receive data. Starting with 2.6.18, flushing the
ldisc buffers just allowed the intermediate buffering to
start feeding more data to the ldisc. This results in the
receive data you see after a TCFLSH.

Starting with 2.6.22 TCFLSH is processed by the intermediate
buffering as well as the ldisc to eliminate any remaining
receive data in the intermediate buffering.


--
Paul Fulghum
Microgate Systems, Ltd

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ