--- linux-2.6.22.14/drivers/char/n_tty.c 2008-01-22 14:02:19.000000000 +0200 +++ linux/drivers/char/n_tty.c 2008-01-15 11:03:15.000000000 +0200 @@ -443,7 +443,7 @@ static void eraser(unsigned char c, stru /* opost('\a', tty); */ /* what do you think? */ return; } - if (c == ERASE_CHAR(tty)) + if (c == ERASE_CHAR(tty) || c == 8) kill_type = ERASE; else if (c == WERASE_CHAR(tty)) kill_type = WERASE; @@ -765,7 +765,7 @@ send_signal: } } if (tty->icanon) { - if (c == ERASE_CHAR(tty) || c == KILL_CHAR(tty) || + if (c == ERASE_CHAR(tty) || c == 8 || c == KILL_CHAR(tty) || (c == WERASE_CHAR(tty) && L_IEXTEN(tty))) { eraser(c, tty); return; @@ -1018,6 +1018,7 @@ static void n_tty_set_termios(struct tty set_bit('\n', tty->process_char_map); if (L_ICANON(tty)) { + set_bit(8, tty->process_char_map); set_bit(ERASE_CHAR(tty), tty->process_char_map); set_bit(KILL_CHAR(tty), tty->process_char_map); set_bit(EOF_CHAR(tty), tty->process_char_map);