diff options
Diffstat (limited to 'patches/0047-write_iter/bluetooth.patch')
-rw-r--r-- | patches/0047-write_iter/bluetooth.patch | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/patches/0047-write_iter/bluetooth.patch b/patches/0047-write_iter/bluetooth.patch deleted file mode 100644 index 093b526c..00000000 --- a/patches/0047-write_iter/bluetooth.patch +++ /dev/null @@ -1,83 +0,0 @@ ---- a/drivers/bluetooth/hci_vhci.c -+++ b/drivers/bluetooth/hci_vhci.c -@@ -151,6 +151,7 @@ static int vhci_create_device(struct vhc - return 0; - } - -+#if LINUX_VERSION_IS_GEQ(3,18,0) - static inline ssize_t vhci_get_user(struct vhci_data *data, - struct iov_iter *from) - { -@@ -158,6 +159,17 @@ static inline ssize_t vhci_get_user(stru - struct sk_buff *skb; - __u8 pkt_type, opcode; - int ret; -+#else -+static inline ssize_t vhci_get_user(struct vhci_data *data, -+ const struct iovec *iov, -+ unsigned long count) -+{ -+ size_t len = iov_length(iov, count); -+ struct sk_buff *skb; -+ __u8 pkt_type, opcode; -+ unsigned long i; -+ int ret; -+#endif - - if (len < 2 || len > HCI_MAX_FRAME_SIZE) - return -EINVAL; -@@ -166,10 +178,20 @@ static inline ssize_t vhci_get_user(stru - if (!skb) - return -ENOMEM; - -+#if LINUX_VERSION_IS_GEQ(3,18,0) - if (copy_from_iter(skb_put(skb, len), len, from) != len) { - kfree_skb(skb); - return -EFAULT; - } -+#else -+ for (i = 0; i < count; i++) { -+ if (copy_from_user(skb_put(skb, iov[i].iov_len), -+ iov[i].iov_base, iov[i].iov_len)) { -+ kfree_skb(skb); -+ return -EFAULT; -+ } -+ } -+#endif - - pkt_type = *((__u8 *) skb->data); - skb_pull(skb, 1); -@@ -281,12 +303,21 @@ static ssize_t vhci_read(struct file *fi - return ret; - } - -+#if LINUX_VERSION_IS_GEQ(3,18,0) - static ssize_t vhci_write(struct kiocb *iocb, struct iov_iter *from) -+#else -+static ssize_t vhci_write(struct kiocb *iocb, const struct iovec *iov, -+ unsigned long count, loff_t pos) -+#endif - { - struct file *file = iocb->ki_filp; - struct vhci_data *data = file->private_data; - -+#if LINUX_VERSION_IS_GEQ(3,18,0) - return vhci_get_user(data, from); -+#else -+ return vhci_get_user(data, iov, count); -+#endif - } - - static unsigned int vhci_poll(struct file *file, poll_table *wait) -@@ -351,7 +382,11 @@ static int vhci_release(struct inode *in - static const struct file_operations vhci_fops = { - .owner = THIS_MODULE, - .read = vhci_read, -+#if LINUX_VERSION_IS_GEQ(3,18,0) - .write_iter = vhci_write, -+#else -+ .aio_write = vhci_write, -+#endif - .poll = vhci_poll, - .open = vhci_open, - .release = vhci_release, |