2007-09-20 21:02:40

by Matthew Wilcox

[permalink] [raw]
Subject: Don't cross the (tty) streams


Connect two machines with a serial cable. On the victim:

willy@rowlf:~$ cat </dev/ttyS1

Now, let's find out which ttyS on the other machine is connected ...

willy@teeth:~$ echo foo >/dev/ttyS1
-bash: echo: write error: Input/output error

Oops, that's not a serial port. No output on rowlf, as expected.
OK, carrying on ...

willy@teeth:~$ echo bar >/dev/ttyS0

And yet on rowlf, we now see:

foo
bar

Looks like there's an error path that doesn't throw away data on -EIO.

This bug exists on at least these two kernels (because I tested it in
both directions:
Linux rowlf 2.6.19-rc6-g70d6673f #1 SMP Thu Nov 16 20:49:15 EST 2006 ia64 GNU/Linux
Linux teeth 2.6.23-rc3-g68dba7a9-dirty #209 SMP PREEMPT Thu Sep 20 15:57:42 EDT 2007 i686 GNU/Linux

Neither kernel has any modifications to its serial code.

--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."


2007-09-20 21:29:48

by Andreas Schwab

[permalink] [raw]
Subject: Re: Don't cross the (tty) streams

Matthew Wilcox <[email protected]> writes:

> Connect two machines with a serial cable. On the victim:
>
> willy@rowlf:~$ cat </dev/ttyS1
>
> Now, let's find out which ttyS on the other machine is connected ...
>
> willy@teeth:~$ echo foo >/dev/ttyS1
> -bash: echo: write error: Input/output error
>
> Oops, that's not a serial port. No output on rowlf, as expected.
> OK, carrying on ...
>
> willy@teeth:~$ echo bar >/dev/ttyS0
>
> And yet on rowlf, we now see:
>
> foo
> bar
>
> Looks like there's an error path that doesn't throw away data on -EIO.

Read the thread starting here:
<http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00020.html>.

Andreas.

--
Andreas Schwab, SuSE Labs, [email protected]
SuSE Linux Products GmbH, Maxfeldstra?e 5, 90409 N?rnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."

2007-09-21 03:08:33

by Matthew Wilcox

[permalink] [raw]
Subject: Re: Don't cross the (tty) streams

On Thu, Sep 20, 2007 at 11:29:31PM +0200, Andreas Schwab wrote:
> Read the thread starting here:
> <http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00020.html>.

Thanks, Andreas. I tested it with /bin/echo instead of the built-in
echo and the problem disappeared. Both machines were running
bash 3.1.17(1)-release.

"Not all bugs are kernel bugs" x10.

--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."