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 <[email protected]>
---
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