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 --- |