tiocmget() and tiocmset() operations are optional and some tty drivers like pty miss the operations. H4 spec requires the operations to set flow control. Return -EOPNOTSUPP in hci_uart_tty_open() if the oprations are not supported. Signed-off-by: Myungho Jung <mhjungk@xxxxxxxxx> --- Changes in v2: - Add NULL check and return error in ath_setup() instead of ath_hci_uart_work() - Remove braces in if statment Changes in v3: - Fix to return -ENODEV - Split into 2 patches - Add stable CC and fixes tags Changes in v4: - Return error in hci_uart_tty_open() drivers/bluetooth/hci_ldisc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c index fbf7b4df23ab..3b1e433aa35b 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c @@ -474,10 +474,11 @@ static int hci_uart_tty_open(struct tty_struct *tty) BT_DBG("tty %p", tty); - /* Error if the tty has no write op instead of leaving an exploitable - * hole + /* Error if the tty has no write or tiocmget or tiocmset op instead of + * leaving an exploitable hole */ - if (tty->ops->write == NULL) + if (tty->ops->write == NULL || tty->ops->tiocmget == NULL || + tty->ops->tiocmset == NULL) return -EOPNOTSUPP; hu = kzalloc(sizeof(struct hci_uart), GFP_KERNEL); -- 2.17.1