diff options
author | Arnd Bergmann <arnd@arndb.de> | 2013-02-19 20:54:15 +0100 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2013-02-19 20:54:25 +0100 |
commit | 6e7f7cfce26cabea2965a43b69b4a0c285a7e4c5 (patch) | |
tree | db7c3d908e8b308c7c559ed4bd561c7ff86da753 /net/bluetooth/smp.c | |
parent | 001c5c4aaaffda840184700b8f488ced3c9dd0a1 (diff) | |
parent | 64ff1673332a1109780d731ca08dcd4f8ad33097 (diff) | |
download | linux-6e7f7cfce26cabea2965a43b69b4a0c285a7e4c5.tar.gz linux-6e7f7cfce26cabea2965a43b69b4a0c285a7e4c5.tar.bz2 linux-6e7f7cfce26cabea2965a43b69b4a0c285a7e4c5.zip |
Merge tag 'omap-for-v3.9/usb-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/soc
These changes contain the OMAP USB related platform data changes
that were dropped from linux next because of the merge conflicts
as requested by me and Olof. The reason was that at this point
we really should be able to do the arch/arm related changes
separately from driver changes to avoid dependencies between
branches.
These patches were initially part of the USB related MFD patches.
Based on our comments, Roger Quadros quickly reworked these
patches into a shared branch between ARM SoC tree and the MFD
tree, then separate patches for the OMAP platform data and
MFD driver.
Note that this branch will conflict with c1d1cd597fc7
("ARM: OMAP2+: omap_device: remove obsolete pm_lats and
early_device code"). Please see http://lkml.org/lkml/2013/2/11/16
for the merge resolution.
[arnd - resolved the merge conflict]
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'net/bluetooth/smp.c')
-rw-r--r-- | net/bluetooth/smp.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 68a9587c9694..5abefb12891d 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -859,6 +859,19 @@ int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb) skb_pull(skb, sizeof(code)); + /* + * The SMP context must be initialized for all other PDUs except + * pairing and security requests. If we get any other PDU when + * not initialized simply disconnect (done if this function + * returns an error). + */ + if (code != SMP_CMD_PAIRING_REQ && code != SMP_CMD_SECURITY_REQ && + !conn->smp_chan) { + BT_ERR("Unexpected SMP command 0x%02x. Disconnecting.", code); + kfree_skb(skb); + return -ENOTSUPP; + } + switch (code) { case SMP_CMD_PAIRING_REQ: reason = smp_cmd_pairing_req(conn, skb); |