The patch titled tty: fix tty network driver interactions with TCGET/TCSET calls has been added to the -mm tree. Its filename is tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: tty: fix tty network driver interactions with TCGET/TCSET calls From: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> We consciously make a change here - we permit mode and speed setting to be done in things like SLIP mode. There isn't actually a technical reason to disallow this. It's usually a silly thing to do but we can do it and soemone might wish to do so. Signed-off-by: Alan Cox <alan@xxxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Jeff Garzik <jeff@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/net/hamradio/6pack.c | 26 ++++++++++---------------- drivers/net/irda/irtty-sir.c | 7 +------ drivers/net/ppp_async.c | 10 +++------- drivers/net/ppp_synctty.c | 10 +++------- drivers/net/slip.c | 8 +------- drivers/net/wan/x25_asy.c | 6 +----- drivers/net/wireless/strip.c | 10 +--------- 7 files changed, 20 insertions(+), 57 deletions(-) diff -puN drivers/net/hamradio/6pack.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls drivers/net/hamradio/6pack.c --- a/drivers/net/hamradio/6pack.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls +++ a/drivers/net/hamradio/6pack.c @@ -762,26 +762,20 @@ static int sixpack_ioctl(struct tty_stru if (copy_from_user(&addr, (void __user *) arg, AX25_ADDR_LEN)) { - err = -EFAULT; - break; - } + err = -EFAULT; + break; + } - netif_tx_lock_bh(dev); - memcpy(dev->dev_addr, &addr, AX25_ADDR_LEN); - netif_tx_unlock_bh(dev); + netif_tx_lock_bh(dev); + memcpy(dev->dev_addr, &addr, AX25_ADDR_LEN); + netif_tx_unlock_bh(dev); - err = 0; - break; - } - - /* Allow stty to read, but not set, the serial port */ - case TCGETS: - case TCGETA: - err = n_tty_ioctl(tty, (struct file *) file, cmd, arg); - break; + err = 0; + break; + } default: - err = -ENOIOCTLCMD; + err = tty_mode_ioctl(tty, file, cmd, arg); } sp_put(sp); diff -puN drivers/net/irda/irtty-sir.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls drivers/net/irda/irtty-sir.c --- a/drivers/net/irda/irtty-sir.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls +++ a/drivers/net/irda/irtty-sir.c @@ -434,11 +434,6 @@ static int irtty_ioctl(struct tty_struct IRDA_ASSERT(dev != NULL, return -1;); switch (cmd) { - case TCGETS: - case TCGETA: - err = n_tty_ioctl(tty, file, cmd, arg); - break; - case IRTTY_IOCTDONGLE: /* this call blocks for completion */ err = sirdev_set_dongle(dev, (IRDA_DONGLE) arg); @@ -454,7 +449,7 @@ static int irtty_ioctl(struct tty_struct err = -EFAULT; break; default: - err = -ENOIOCTLCMD; + err = tty_mode_ioctl(tty, file, cmd, arg); break; } return err; diff -puN drivers/net/ppp_async.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls drivers/net/ppp_async.c --- a/drivers/net/ppp_async.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls +++ a/drivers/net/ppp_async.c @@ -309,16 +309,11 @@ ppp_asynctty_ioctl(struct tty_struct *tt err = 0; break; - case TCGETS: - case TCGETA: - err = n_tty_ioctl(tty, file, cmd, arg); - break; - case TCFLSH: /* flush our buffers and the serial port's buffer */ if (arg == TCIOFLUSH || arg == TCOFLUSH) ppp_async_flush_output(ap); - err = n_tty_ioctl(tty, file, cmd, arg); + err = tty_perform_flush(tty, arg); break; case FIONREAD: @@ -329,7 +324,8 @@ ppp_asynctty_ioctl(struct tty_struct *tt break; default: - err = -ENOIOCTLCMD; + /* Try the various mode ioctls */ + err = tty_mode_ioctl(tty, file, cmd, arg); } ap_put(ap); diff -puN drivers/net/ppp_synctty.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls drivers/net/ppp_synctty.c --- a/drivers/net/ppp_synctty.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls +++ a/drivers/net/ppp_synctty.c @@ -349,16 +349,11 @@ ppp_synctty_ioctl(struct tty_struct *tty err = 0; break; - case TCGETS: - case TCGETA: - err = n_tty_ioctl(tty, file, cmd, arg); - break; - case TCFLSH: /* flush our buffers and the serial port's buffer */ if (arg == TCIOFLUSH || arg == TCOFLUSH) ppp_sync_flush_output(ap); - err = n_tty_ioctl(tty, file, cmd, arg); + err = tty_perform_flush(tty, arg); break; case FIONREAD: @@ -369,7 +364,8 @@ ppp_synctty_ioctl(struct tty_struct *tty break; default: - err = -ENOIOCTLCMD; + err = tty_mode_ioctl(tty, file, cmd, arg); + break; } sp_put(ap); diff -puN drivers/net/slip.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls drivers/net/slip.c --- a/drivers/net/slip.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls +++ a/drivers/net/slip.c @@ -1218,14 +1218,8 @@ static int slip_ioctl(struct tty_struct return 0; /* VSV changes end */ #endif - - /* Allow stty to read, but not set, the serial port */ - case TCGETS: - case TCGETA: - return n_tty_ioctl(tty, file, cmd, arg); - default: - return -ENOIOCTLCMD; + return tty_mode_ioctl(tty, file, cmd, arg); } } diff -puN drivers/net/wan/x25_asy.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls drivers/net/wan/x25_asy.c --- a/drivers/net/wan/x25_asy.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls +++ a/drivers/net/wan/x25_asy.c @@ -719,12 +719,8 @@ static int x25_asy_ioctl(struct tty_stru return 0; case SIOCSIFHWADDR: return -EINVAL; - /* Allow stty to read, but not set, the serial port */ - case TCGETS: - case TCGETA: - return n_tty_ioctl(tty, file, cmd, arg); default: - return -ENOIOCTLCMD; + return tty_mode_ioctl(tty, file, cmd, arg); } } diff -puN drivers/net/wireless/strip.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls drivers/net/wireless/strip.c --- a/drivers/net/wireless/strip.c~tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls +++ a/drivers/net/wireless/strip.c @@ -2735,16 +2735,8 @@ static int strip_ioctl(struct tty_struct return -EFAULT; return set_mac_address(strip_info, &addr); } - /* - * Allow stty to read, but not set, the serial port - */ - - case TCGETS: - case TCGETA: - return n_tty_ioctl(tty, file, cmd, arg); - break; default: - return -ENOIOCTLCMD; + return tty_mode_ioctl(tty, file, cmd, arg); break; } return 0; _ Patches currently in -mm which might be from alan@xxxxxxxxxxxxxxxxxxx are origin.patch frv-remove-bogus-no_irq-=-1-define.patch git-libata-all.patch pata_hpt37x-fix-outstanding-bug-reports-on-the-hpt374-and-37x-cable-detect-checkpatch-fixes.patch serial-keep-the-dtr-setting-for-serial-console.patch quirk_vialatency-omit-reading-pci-revision-id.patch quirk_vialatency-omit-reading-pci-revision-id-checkpatch-fixes.patch initio-fix-conflict-when-loading-driver.patch serial-only-use-pnp-irq-if-its-valid.patch keyspan-init-termios-properly.patch tty-fix-network-driver-interactions-with-tcget-set-calls.patch tty-fix-network-driver-interactions-with-tcget-set-checkpatch-fixes.patch tty-fix-tty-network-driver-interactions-with-tcget-tcset-calls.patch geode-lists-are-subscriber-only.patch tty-kill-tty_flipbuf_size.patch drivers-edac-turnon-edac-device-error-logging.patch drivers-edac-use-round_jiffies_relative.patch drivers-edac-add-cell-xdr-memory-types.patch drivers-edac-add-cell-mc-driver.patch drivers-edac-i3000-code-tidying.patch drivers-edac-i3000-replace-macros-with-functions.patch drivers-edac-add-freescale-mpc85xx-driver.patch drivers-edac-add-marvell-mv64x60-driver.patch drivers-edac-add-marvell-mv64x60-driver-fix.patch dz-clean-up-and-improve-the-setup-of-termios-settings.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html