Merge tag 'tty-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull tty/serial patches from Greg Kroah-Hartman: "Here's the big tty/serial driver patches for 3.9-rc1. More tty port rework and fixes from Jiri here, as well as lots of individual serial driver updates and fixes. All of these have been in the linux-next tree for a while." * tag 'tty-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (140 commits) tty: mxser: improve error handling in mxser_probe() and mxser_module_init() serial: imx: fix uninitialized variable warning serial: tegra: assume CONFIG_OF TTY: do not update atime/mtime on read/write lguest: select CONFIG_TTY to build properly. ARM defconfigs: add missing inclusions of linux/platform_device.h fb/exynos: include platform_device.h ARM: sa1100/assabet: include platform_device.h directly serial: imx: Fix recursive locking bug pps: Fix build breakage from decoupling pps from tty tty: Remove ancient hardpps() pps: Additional cleanups in uart_handle_dcd_change pps: Move timestamp read into PPS code proper pps: Don't crash the machine when exiting will do pps: Fix a use-after free bug when unregistering a source. pps: Use pps_lookup_dev to reduce ldisc coupling pps: Add pps_lookup_dev() function tty: serial: uartlite: Support uartlite on big and little endian systems tty: serial: uartlite: Fix sparse and checkpatch warnings serial/arc-uart: Miscll DT related updates (Grant's review comments) ... Fix up trivial conflicts, mostly just due to the TTY config option clashing with the EXPERIMENTAL removal.
This commit is contained in:
@@ -12,6 +12,7 @@ config BT_RFCOMM
|
||||
config BT_RFCOMM_TTY
|
||||
bool "RFCOMM TTY support"
|
||||
depends on BT_RFCOMM
|
||||
depends on TTY
|
||||
help
|
||||
This option enables TTY emulation support for RFCOMM channels.
|
||||
|
||||
|
@@ -541,23 +541,21 @@ int rfcomm_dev_ioctl(struct sock *sk, unsigned int cmd, void __user *arg)
|
||||
static void rfcomm_dev_data_ready(struct rfcomm_dlc *dlc, struct sk_buff *skb)
|
||||
{
|
||||
struct rfcomm_dev *dev = dlc->owner;
|
||||
struct tty_struct *tty;
|
||||
|
||||
if (!dev) {
|
||||
kfree_skb(skb);
|
||||
return;
|
||||
}
|
||||
|
||||
tty = dev->port.tty;
|
||||
if (!tty || !skb_queue_empty(&dev->pending)) {
|
||||
if (!skb_queue_empty(&dev->pending)) {
|
||||
skb_queue_tail(&dev->pending, skb);
|
||||
return;
|
||||
}
|
||||
|
||||
BT_DBG("dlc %p tty %p len %d", dlc, tty, skb->len);
|
||||
BT_DBG("dlc %p len %d", dlc, skb->len);
|
||||
|
||||
tty_insert_flip_string(tty, skb->data, skb->len);
|
||||
tty_flip_buffer_push(tty);
|
||||
tty_insert_flip_string(&dev->port, skb->data, skb->len);
|
||||
tty_flip_buffer_push(&dev->port);
|
||||
|
||||
kfree_skb(skb);
|
||||
}
|
||||
@@ -621,26 +619,23 @@ static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig)
|
||||
/* ---- TTY functions ---- */
|
||||
static void rfcomm_tty_copy_pending(struct rfcomm_dev *dev)
|
||||
{
|
||||
struct tty_struct *tty = dev->port.tty;
|
||||
struct sk_buff *skb;
|
||||
int inserted = 0;
|
||||
|
||||
if (!tty)
|
||||
return;
|
||||
|
||||
BT_DBG("dev %p tty %p", dev, tty);
|
||||
BT_DBG("dev %p", dev);
|
||||
|
||||
rfcomm_dlc_lock(dev->dlc);
|
||||
|
||||
while ((skb = skb_dequeue(&dev->pending))) {
|
||||
inserted += tty_insert_flip_string(tty, skb->data, skb->len);
|
||||
inserted += tty_insert_flip_string(&dev->port, skb->data,
|
||||
skb->len);
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
||||
rfcomm_dlc_unlock(dev->dlc);
|
||||
|
||||
if (inserted > 0)
|
||||
tty_flip_buffer_push(tty);
|
||||
tty_flip_buffer_push(&dev->port);
|
||||
}
|
||||
|
||||
static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
|
||||
|
Reference in New Issue
Block a user