hci_vhci.c (712cba5d87a6c0e980ee5fad45734e189c4d7151) hci_vhci.c (cbbd26b8b1a6af9c02e2b6523e12bd50cc765059)
1/*
2 *
3 * Bluetooth virtual HCI driver
4 *
5 * Copyright (C) 2000-2001 Qualcomm Incorporated
6 * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
7 * Copyright (C) 2004-2006 Marcel Holtmann <marcel@holtmann.org>
8 *

--- 167 unchanged lines hidden (view full) ---

176
177 if (len < 2 || len > HCI_MAX_FRAME_SIZE)
178 return -EINVAL;
179
180 skb = bt_skb_alloc(len, GFP_KERNEL);
181 if (!skb)
182 return -ENOMEM;
183
1/*
2 *
3 * Bluetooth virtual HCI driver
4 *
5 * Copyright (C) 2000-2001 Qualcomm Incorporated
6 * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
7 * Copyright (C) 2004-2006 Marcel Holtmann <marcel@holtmann.org>
8 *

--- 167 unchanged lines hidden (view full) ---

176
177 if (len < 2 || len > HCI_MAX_FRAME_SIZE)
178 return -EINVAL;
179
180 skb = bt_skb_alloc(len, GFP_KERNEL);
181 if (!skb)
182 return -ENOMEM;
183
184 if (copy_from_iter(skb_put(skb, len), len, from) != len) {
184 if (!copy_from_iter_full(skb_put(skb, len), len, from)) {
185 kfree_skb(skb);
186 return -EFAULT;
187 }
188
189 pkt_type = *((__u8 *) skb->data);
190 skb_pull(skb, 1);
191
192 switch (pkt_type) {

--- 198 unchanged lines hidden ---
185 kfree_skb(skb);
186 return -EFAULT;
187 }
188
189 pkt_type = *((__u8 *) skb->data);
190 skb_pull(skb, 1);
191
192 switch (pkt_type) {

--- 198 unchanged lines hidden ---