diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-11-18 01:05:00 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-12-03 19:34:20 +0100 |
commit | 7e21addcd0ad87696c17409399e56e874931da57 (patch) | |
tree | 98a1f7a02dfa1db6d3c67565982f367ace68929c /net | |
parent | 2da31939a42f7a676a0bc5155d6a0a39ed8451f2 (diff) | |
download | linux-7e21addcd0ad87696c17409399e56e874931da57.tar.gz linux-7e21addcd0ad87696c17409399e56e874931da57.tar.bz2 linux-7e21addcd0ad87696c17409399e56e874931da57.zip |
Bluetooth: Return ENETDOWN when interface is down
Sending commands to a down interface results in a timeout while clearly
it should just return ENETDOWN. When using the ioctls this works fine,
but not when using the HCI sockets sendmsg interface.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/hci_sock.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 1ca5c7ca9bd4..c3701f37aeb0 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c @@ -414,6 +414,11 @@ static int hci_sock_sendmsg(struct kiocb *iocb, struct socket *sock, goto done; } + if (!test_bit(HCI_UP, &hdev->flags)) { + err = -ENETDOWN; + goto done; + } + if (!(skb = bt_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err))) goto done; |