From: Vladis Dronov <vdronov@redhat.com>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: Johan Hedberg <johan.hedberg@gmail.com>,
linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org,
Suraj Sumangala <suraj@atheros.com>,
Frederic Danis <frederic.danis@linux.intel.com>,
Loic Poulain <loic.poulain@intel.com>,
Balakrishna Godavarthi <bgodavar@codeaurora.org>,
syzkaller@googlegroups.com
Subject: Re: [PATCH] Bluetooth: hci_uart: check for missing tty operations in protocol handlers
Date: Thu, 25 Jul 2019 10:26:29 -0400 (EDT) [thread overview]
Message-ID: <74627941.4546902.1564064789961.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <2E234F47-724D-4CFB-93B5-48E5BDA6F230@holtmann.org>
Hello, Marcel,
> why is this one hidden behind CONFIG_PM? The general baud rate changes are
> independent of runtime power management support.
hci_bcm calls hci_uart_set_flow_control() only from functions hidden behind
#ifdef-CONFIG_PM (surely this can change in the future), and so without
CONFIG_PM set it cannot hit the bug (as of now). So I've hidden the check
for tiocm[gs]et() behind #ifdef-CONFIG_PM too.
If you tell me it is better to remove this #ifdef, I'll remove it.
> And I would introduce a bool hci_uart_has_tiocm_support(struct hci_uart *)
> helper.
Great, I will add it to the v2 fix. I guess a good place for it is hci_ldisc.c,
near hci_uart_set_flow_control(), isn't it?
Best regards,
Vladis Dronov | Red Hat, Inc. | The Core Kernel | Senior Software Engineer
----- Original Message -----
> From: "Marcel Holtmann" <marcel@holtmann.org>
> To: "Vladis Dronov" <vdronov@redhat.com>
> Cc: "Johan Hedberg" <johan.hedberg@gmail.com>, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, "Suraj
> Sumangala" <suraj@atheros.com>, "Frederic Danis" <frederic.danis@linux.intel.com>, "Loic Poulain"
> <loic.poulain@intel.com>, "Balakrishna Godavarthi" <bgodavar@codeaurora.org>, syzkaller@googlegroups.com
> Sent: Thursday, July 25, 2019 2:59:42 PM
> Subject: Re: [PATCH] Bluetooth: hci_uart: check for missing tty operations in protocol handlers
>
> Hi Vladis,
>
> > Certain ttys operations (pty_unix98_ops) lack tiocmget() and tiocmset()
> > functions which are called by the certain HCI UART protocols (hci_ath,
> > hci_bcm, hci_intel, hci_mrvl, hci_qca) via hci_uart_set_flow_control()
> > or directly. This leads to an execution at NULL and can be triggered by
> > an unprivileged user. Fix this by adding a check for the missing tty
> > operations to the protocols which use them.
> >
> > This fixes CVE-2019-10207.
> >
> > Link:
> > https://syzkaller.appspot.com/bug?id=1b42faa2848963564a5b1b7f8c837ea7b55ffa50
> > Reported-by: syzbot+79337b501d6aa974d0f6@syzkaller.appspotmail.com
> > Cc: stable@vger.kernel.org # v2.6.36+
> > Fixes: b3190df62861 ("Bluetooth: Support for Atheros AR300x serial chip")
> > Fixes: 118612fb9165 ("Bluetooth: hci_bcm: Add suspend/resume PM functions")
> > Fixes: ff2895592f0f ("Bluetooth: hci_intel: Add Intel baudrate
> > configuration support")
> > Fixes: 162f812f23ba ("Bluetooth: hci_uart: Add Marvell support")
> > Fixes: fa9ad876b8e0 ("Bluetooth: hci_qca: Add support for Qualcomm
> > Bluetooth chip wcn3990")
> > Signed-off-by: Vladis Dronov <vdronov@redhat.com>
> > ---
> > drivers/bluetooth/hci_ath.c | 3 +++
> > drivers/bluetooth/hci_bcm.c | 5 +++++
> > drivers/bluetooth/hci_intel.c | 3 +++
> > drivers/bluetooth/hci_mrvl.c | 3 +++
> > drivers/bluetooth/hci_qca.c | 4 ++++
> > 5 files changed, 18 insertions(+)
> >
> > diff --git a/drivers/bluetooth/hci_ath.c b/drivers/bluetooth/hci_ath.c
> > index a55be205b91a..99df8a13e47e 100644
> > --- a/drivers/bluetooth/hci_ath.c
> > +++ b/drivers/bluetooth/hci_ath.c
> > @@ -98,6 +98,9 @@ static int ath_open(struct hci_uart *hu)
> >
> > BT_DBG("hu %p", hu);
> >
> > + if (!hu->tty->driver->ops->tiocmget || !hu->tty->driver->ops->tiocmset)
> > + return -ENOTSUPP;
> > +
> > ath = kzalloc(sizeof(*ath), GFP_KERNEL);
> > if (!ath)
> > return -ENOMEM;
> > diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
> > index 8905ad2edde7..8c3e09cc341c 100644
> > --- a/drivers/bluetooth/hci_bcm.c
> > +++ b/drivers/bluetooth/hci_bcm.c
> > @@ -406,6 +406,11 @@ static int bcm_open(struct hci_uart *hu)
> >
> > bt_dev_dbg(hu->hdev, "hu %p", hu);
> >
> > +#ifdef CONFIG_PM
> > + if (!hu->tty->driver->ops->tiocmget || !hu->tty->driver->ops->tiocmset)
> > + return -ENOTSUPP;
> > +#endif
> > +
>
> why is this one hidden behind CONFIG_PM? The general baud rate changes are
> independent of runtime power management support.
>
> And I would introduce a bool hci_uart_has_tiocm_support(struct hci_uart *)
> helper.
>
> Regards
>
> Marcel
next prev parent reply other threads:[~2019-07-25 14:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-25 12:09 [PATCH] Bluetooth: hci_uart: check for missing tty operations in protocol handlers Vladis Dronov
2019-07-25 12:59 ` Marcel Holtmann
2019-07-25 14:26 ` Vladis Dronov [this message]
2019-07-25 14:31 ` Marcel Holtmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=74627941.4546902.1564064789961.JavaMail.zimbra@redhat.com \
--to=vdronov@redhat.com \
--cc=bgodavar@codeaurora.org \
--cc=frederic.danis@linux.intel.com \
--cc=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=loic.poulain@intel.com \
--cc=marcel@holtmann.org \
--cc=suraj@atheros.com \
--cc=syzkaller@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.