Problem description: hci_uart_tty_open() is missing check that tty has a write op (a few don't), and you should check this at open and refuse if the ops you need don't exist (eg as SLIP does: static int slip_open(struct tty_struct *tty) { struct slip *sl; int err; if (!capable(CAP_NET_ADMIN)) return -EPERM; if (tty->ops->write == NULL) return -EOPNOTSUPP; Fortunately almost no system will have a driver loaded which lacks a write op, but this should be fixed.
Discussion: http://lkml.org/lkml/2010/10/7/255
Upstream commit: http://git.kernel.org/linus/c19483cc5e56ac5e22dd19cf25ba210ab1537773
Acknowledgements: Red Hat would like to thank Alan Cox for reporting this issue.
This issue has been addressed in following products: Red Hat Enterprise Linux 5 Via RHSA-2011:0004 https://rhn.redhat.com/errata/RHSA-2011-0004.html
This issue has been addressed in following products: Red Hat Enterprise Linux 6 Via RHSA-2011:0007 https://rhn.redhat.com/errata/RHSA-2011-0007.html
This issue has been addressed in following products: Red Hat Enterprise Linux 4 Via RHSA-2011:0162 https://rhn.redhat.com/errata/RHSA-2011-0162.html
This issue has been addressed in following products: MRG for RHEL-5 Via RHSA-2011:0330 https://rhn.redhat.com/errata/RHSA-2011-0330.html